devexpress XPO вычисляемое свойство для дочерней коллекции выберите n + 1 - PullRequest
1 голос
/ 02 августа 2011

У меня есть доменный объект 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 Ответ

1 голос
/ 04 августа 2011

Вы можете использовать Session Prefetch для выполнения вашей задачи

Session.PreFetch(ObjectList, "OrderLines");  

Также рассмотрите этот пример из DevExpress Code Central E305 .Там вычисленное свойство кешируется.В результате производительность увеличивается более

...