我有一个与OrderLine有关联的XPO域对象Order。我有一个属性Profit它被实现为
public decimal Profit
{
get
{
decimal result = 0;
foreach (OrderLine ol in this.OrderLines)
{
result += ol.Profit.AsMoney() * ol.Quantity;
}
return result;
}
}
,但这会导致订单列表对每个订单执行每个订单行的查询。我如何在第二个查询中加载订单行集合并将它们连接到内存中,或者如果这是不可行的,则以某种方式阻止利润属性的加载,直到它实际被访问?
您可以使用会话预取方法来完成您的任务
Session.PreFetch(ObjectList, "OrderLines");
还可以考虑查看DevExpress Code Central E305中的这个示例。在那里,计算出的属性被缓存。结果性能提高了很多