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

本文关键字:select 属性 XPO 计算 子集合 devexpress | 更新日期: 2023-09-27 18:04:12

我有一个与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;
    }
}

,但这会导致订单列表对每个订单执行每个订单行的查询。我如何在第二个查询中加载订单行集合并将它们连接到内存中,或者如果这是不可行的,则以某种方式阻止利润属性的加载,直到它实际被访问?

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

您可以使用会话预取方法来完成您的任务

Session.PreFetch(ObjectList, "OrderLines");  

还可以考虑查看DevExpress Code Central E305中的这个示例。在那里,计算出的属性被缓存。结果性能提高了很多