2011-08-02 41 views
1

我有一個XPO域對象與OrderLine有關聯的訂單。爲了我有一個財產利潤實施爲devexpress XPO計算屬性的子集合選擇n + 1

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

但這會導致訂單列表執行每個訂單的查詢每個訂單。我如何在第二個查詢中加載訂單行的集合並將它們加入到內存中,或者如果這樣做不可行,則某種方式可以防止在實際訪問它之前加載Profit屬性?

回答

1

可以使用SessionPrefetch方法來完成你的任務

Session.PreFetch(ObjectList, "OrderLines"); 

還考慮尋找從DevExpress的代碼中央E305這個樣品。那裏計算的屬性被緩存。結果性能提高更多