我已閱讀了一些文章,指出IEnumerable用於模仿存儲過程或限制數據庫。在外部提供商上丟失了延遲加載能力。IQueryable與IEnumerable存儲庫模式,延遲加載
IQueryable爲開發者提供了更多的靈活性。延遲加載在那裏。
在性能方面,都會消耗大量的性能..所以哪一個更可取?
我已閱讀了一些文章,指出IEnumerable用於模仿存儲過程或限制數據庫。在外部提供商上丟失了延遲加載能力。IQueryable與IEnumerable存儲庫模式,延遲加載
IQueryable爲開發者提供了更多的靈活性。延遲加載在那裏。
在性能方面,都會消耗大量的性能..所以哪一個更可取?
從Repository模式的角度來看,你可以認爲它是這樣的:
當你想整個列表傳遞給客戶一次性使用的預先加載IEnumerable
。他們仍然可以添加linq子句,但客戶不會從延期執行中受益。
當您希望通過允許客戶端添加自己的linq子句來延長延遲查詢功能時,使用延遲加載IQueryable
。這會推遲整個查詢的執行,直到需要輸出爲止。
「的IEnumerable」和「IQueryable的」之間的主要區別是關於執行過濾器邏輯位置。一個在客戶端執行(在內存中),另一個在數據庫上執行。
因此,當查詢像List,Array等內存集合中的數據時,應該使用IEnumerable。
另一方面,從外存(如遠程數據庫,服務)集合查詢數據時,應使用IQueryable。
一如既往......這取決於你究竟需要什麼...... –