簡體   English   中英

存儲庫模式中的IQueryable與IEnumerable,延遲加載

[英]IQueryable vs. IEnumerable in the repository pattern , lazy loading

我已經閱讀了一些文章,聲明IEnumerable用於模仿存儲過程或限制您的數據庫。 外部提供商丟失了延遲加載能力。

IQueryable可以為開發人員提供更大的靈活性。 懶惰裝載就在那里。

在性能方面,兩者都消耗了大量的性能..哪一個更優選?

從存儲庫模式的角度來看,您可以這樣想:

  1. 當您想要一次性將整個列表傳遞給客戶端時,請使用eager loading IEnumerable 他們仍然可以添加linq子句,但客戶端不會從延遲執行中受益。

  2. 當您希望通過允許客戶端添加自己的linq子句來向客戶端擴展延遲查詢功能時,請使用延遲加載IQueryable 這將延遲執行整個查詢,直到需要輸出為止。

也可以看看
延期執行和急切評估

IEnumerable vs IQueryable

IQueryable最適用於服務器端數據,而IEnumerable最適用於客戶端使用的數組/列表。

“IEnumerable”和“IQueryable”之間的主要區別在於執行過濾器邏輯的位置。 一個在客戶端執行(在內存中),另一個在數據庫上執行。

因此,當從內存集合(如List,Array等)查詢數據時,您應該使用IEnumerable。

另一方面,當從外部存儲器(如遠程數據庫,服務)集合中查詢數據時,您應該使用IQueryable。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM