![](/img/trans.png)
[英]Strange behavior with IEnumerable/IQueryable extension (no lazy loading?)
[英]IQueryable vs. IEnumerable in the repository pattern , lazy loading
我已經閱讀了一些文章,聲明IEnumerable用於模仿存儲過程或限制您的數據庫。 外部提供商丟失了延遲加載能力。
IQueryable可以為開發人員提供更大的靈活性。 懶惰裝載就在那里。
在性能方面,兩者都消耗了大量的性能..哪一個更優選?
從存儲庫模式的角度來看,您可以這樣想:
當您想要一次性將整個列表傳遞給客戶端時,請使用eager loading IEnumerable
。 他們仍然可以添加linq子句,但客戶端不會從延遲執行中受益。
當您希望通過允許客戶端添加自己的linq子句來向客戶端擴展延遲查詢功能時,請使用延遲加載IQueryable
。 這將延遲執行整個查詢,直到需要輸出為止。
也可以看看
延期執行和急切評估
“IEnumerable”和“IQueryable”之間的主要區別在於執行過濾器邏輯的位置。 一個在客戶端執行(在內存中),另一個在數據庫上執行。
因此,當從內存集合(如List,Array等)查詢數據時,您應該使用IEnumerable。
另一方面,當從外部存儲器(如遠程數據庫,服務)集合中查詢數據時,您應該使用IQueryable。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.