devexpress XPO计算的子集合属性选择n + 1

时间:2011-08-02 19:10:19

标签: c# devexpress xpo xaf

我有一个XPO域对象Order,它与OrderLine有关联。为了我有一个属性Profit,实现为

public decimal Profit
{
    get
    {
        decimal result = 0;
        foreach (OrderLine ol in this.OrderLines)
        {
            result += ol.Profit.AsMoney() * ol.Quantity;
        }
        return result;
    }
}

但这导致订单列表为每个订单的每个订单行执行查询。如何在第二个查询中加载订单行集合并将它们连接到内存中,或者如果不可行,某些方法会阻止加载Profit属性,直到实际访问它为止?

1 个答案:

答案 0 :(得分:1)

您可以使用Session Prefetch方法完成任务

Session.PreFetch(ObjectList, "OrderLines");  

另请考虑从DevExpress Code Central E305查看此示例。计算属性正在缓存中。结果,性能提高了更多