Здравствуйте.
Нашел в 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?
Делай раз.
[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".
*/
}