Вопрос по ComplexMapper
От: eLVik Россия  
Дата: 25.09.10 14:51
Оценка:
Здравствуйте.

Нашел в ComplexMapper вот такой код:


            object GetObject(object o)
            {
                var obj = MemberAccessor.GetValue(o);

                if (_createInstance && obj == null)
                {
                    if (_typeAccessor == null)
                        _typeAccessor = TypeAccessor.GetAccessor(MemberAccessor.Type);

                    obj = _typeAccessor.CreateInstanceEx();

                    MemberAccessor.SetValue(o, obj);
                }

                return obj;
            }


что, по всей видимости, позволяет создать вложенный объект, если он еще не задан. Но в моем случае _createInstance всегда равен false.
Целевые объекты для маппинга обычные, не абстрактные. Что и где нужно подправить, чтобы _createInstance стал равен true?
Re: ComplexMapper + SqlIgnore
От: eLVik Россия  
Дата: 07.10.10 20:09
Оценка:
Делай раз.


    [TableName("Products")]
    public class Product
    {
        public int OID { get; set; }
        public string Name { get; set; }

        [SqlIgnore]
        public Category Category  { get; set; }

        public Product()
        {
            Category = new Category();
        }
    }

    public class Category
    {
        public int OID { get; set; }
        public string Name { get; set; }
    }


Делай два.


            var products = new List<Product>();
            using (var db = new DbManager())
            {
                db.SetCommand("SELECT a.OID, a.Name, b.Name AS [Category.Name], b.OID AS [Category.OID] From Products as a inner join Category as b on a.Category_OID = b.OID").ExecuteList<Product>(products);

            }


Делай три.


            var products = new List<Product>();
            using (var db = new DbManager())
            {
                var query = new SqlQuery<Product>();
                products = query.SelectAll();   // Валится с ошибкой
                /*
                Недопустимое имя столбца "Category.Name".
                Недопустимое имя столбца "Category.OID".
                */ 
            }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.