1

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

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

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

4

1 回答 1

1

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

Session.PreFetch(ObjectList, "OrderLines");  

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

于 2011-08-04T12:56:19.923 回答