2009-06-09 90 views
0

我可能正在解決EF中較大的可用性問題之一。實體框架:執行大量查詢

我需要在模型的很大一部分上進行計算。例如,假設我們需要一棟建築物及其所有門,這些門的類別。但我還需要窗戶,傢俱,屋頂等。

並設想我的邏輯還取決於這些類別(子類別等)後面的更多耦合表。

我們需要在代碼中的很多位置使用這個模型的大部分,所以我需要讓整個模型填充並由EF鏈接起來。

爲此,我們只是簡單地查詢ObjectContext並使用類型安全的包含。

但是,這會變得不切實際且容易出錯。

有沒有人有解決這類問題的建議?

回答

3

使用投影來獲取所需的值,特別是如果您不打算更新所有內容。你也許並不需要一件傢俱等的每個屬性所以不是檢索實體本身的,項目你想要什麼:

from b in Context.Buildings 
where b.Id == 123 
select new 
{ 
    Name = b.Name, 
    Rooms = from r in b.Rooms 
      select new 
      { 
       XDimension = r.XDimension, 
       // etc. 

現在你再也不用擔心東西是否加載;你需要的東西被加載,而你不需要的東西不是。生成的SQL也會顯着簡化。

+0

感謝您的回答。我懷疑這種方法是否實用,但它看起來值得一試... – Bertvan 2009-06-09 19:02:33