因此,我建議幾次禁用惰性加載時構建應用程序與上述框架,並且ToList()將強制執行我的存儲庫中的查詢。我被告知如果使用AsEnumerable(),我會避免使用某些「陷阱」。然而,在最近的一個問題中,我在我的代碼示例中包含了一堆ToList(),並且讓很多人確信IEnumerable返回的結果要好得多。ASP.NET MVC2與實體框架4 - 存儲庫中的AsEnumerable()或ToList()?
我現在徹底困惑,至少可以說。
我應該在我的存儲庫中返回IEnumerable,然後將它們轉換爲我的視圖模型中的List?我是否應該像以前一樣在存儲庫中直接使用ToList()?我是否想要首先啓用延遲執行?
吉米尼聖誕...
編輯: 所以,是,我禁用延遲加載,基於前面的建議,我應該再重新啓用它,從我的倉庫返回的IEnumerable/IQueryable的,並轉換在我的視圖模型中收集到一個List,如果需要?
下面的答案之一將IEnumerable與急切的執行聯繫起來,而我的印象是隻有ToList()會強制立即執行查詢。
我偶然發現了this,this和this,這些都包含了一些與這個問題有關的有趣討論。
我想我的問題的一部分,包括我是否應該被強制執行的渴望與框架的給定組合,如一些人所建議。 – asfsadf 2010-09-23 04:09:34
除了我已經提到的因素之外,強制急切的執行可能實際上會導致性能問題;即使消費者實際上並不需要所有數據,整個數據集也會一次返回。 – 2010-09-23 04:11:51
有趣的文章。謝謝。 – asfsadf 2010-09-23 04:13:11