我有實體「想法」,它具有子實體集合「ChildIdeas」。我需要加載「ChildIdeas」的想法清單和數量(只計數!)。 我可以這樣做:實體框架,性能調優
預先加載
from i in _dataContext.Ideas.Include("ChildIdeas") ...
優點:所有必要的數據通過一個請求得到;缺點:加載不必要的數據。我需要ChildIdeas只計數,不完整ChildIdeas名單
明確裝載
from i in _dataContext.Ideas ...
idea.ChildIdeas.Loading()
優點:無; 缺點:許多請求(ideas.count + 1),而不是一個,負載不需要的數據
獨立請求
from i in _dataContext.Ideas ...
_repository.GetCountChildIdeas(idea.ID);
優點:只加載必要的數據; 缺點:許多請求(ideas.count + 1)而不是一個
所有3種類型都有缺點。也許存在任何方式來只加載必要的數據?如果是 - 它是什麼,如果不是 - 哪種方式最適合這種情況?
[ADDED] 後負載測試(1個用戶)我有網頁加載(在秒): 渴望兒童思想 - 1.31秒 明確的兒童觀 - 1.19秒 外部請求 - 1.14秒
所以,對我而言,熱切的方式是最糟糕的......爲什麼明確的方式更好?
我添加您的示例關於急切加載數據重複(http://stackoverflow.com/questions/5521749/how-many-include-i-can-use-on-objectset-in-entityframework-to-retain-performance/5522195#5522195)作爲可能的解釋,爲什麼OP已經測試了比渴望加載更慢的性能。 – Slauma
據我所知,我們可以將Ideas類擴展到一個屬性... –
不,你不能因爲投影不可能映射類。 –