查询POCO与参考
问题描述:
我有以下的(简化)数据模型:查询POCO与参考
public class Order : IHasId<long>
{
[AutoIncrement]
public long Id { get; set; }
[References(typeof(Material))]
public long MaterialId { get; set; }
[Reference]
public Material Material { get; set; }
}
public class Material : IHasId<long>
{
[AutoIncrement]
public long Id { get; set; }
public string Name { get; set; }
}
我想实现的是填充Order.Material
与MaterialId
引用的材料,有没有办法实现,在一个简单的方法?该Load APIs似乎做同样的事情,但在相反的情况下(当参考是Material
,而不是Order
)
答
这在OrmLite称为Self References,并与上面的例子中的工作原理:
public class Order : IHasId<long>
{
[AutoIncrement]
public long Id { get; set; }
[References(typeof(Material))]
public long MaterialId { get; set; }
[Reference]
public Material Material { get; set; }
}
public class Material : IHasId<long>
{
[AutoIncrement]
public long Id { get; set; }
public string Name { get; set; }
}
db.Insert(new Material { Name = "A" });
db.Insert(new Material { Name = "B" });
db.Insert(new Order {
MaterialId = 2,
});
var order = db.LoadSingleById<Order>(1);
order.PrintDump();
递归打印对象图到输出:
{
Id: 1,
MaterialId: 2,
Material:
{
Id: 2,
Name: B
}
}
谢谢。它只适用于'Load *'方法吗? – 2015-01-09 22:59:58
也有,有没有办法配置更深的嵌套?在文档上说它只嵌套到第一级 – 2015-01-09 23:07:25
@GiacomoTagliabue'Load *'API专门用于加载引用yes,当您不想加载引用时使用标准API。 POCO已断开连接并仅支持1层嵌套。 – mythz 2015-01-09 23:46:19