我明白IEnumerable和IQueryable是如何工作的。我無法想象在使用SQL數據庫時實體框架中需要IEnumerable的情況。我想知道我是否可以在EF中放棄IEnumerable。你可以提供任何有用的例子,顯示IEnumerable比IQueryable更有用嗎?什麼時候IEnumerable優先於實體框架中的IQueryable?
0
A
回答
1
有三種情況想到。
- 當EF無法將您的查詢轉換爲正確的SQL語句時 - 因此您需要將結果存入內存以完成計算。
- 當您需要執行涉及不轉換爲SQL的操作符的操作時。
- 當SQL服務器在生成計算時比在內存中計算時慢。很多時候我發現將所有數據拉入內存比讓SQL執行更快。
1
提供的數據源(如IQueryable
)可以查詢,那麼,使用IQueryable
- 雖然你不應該創建IQueryable
實例或實現它自己,這就是EF是。如果您使用帶有外部數據源或其他本身無法查詢的數據的EF,例如JOIN
帶有非EF數據的EF表,則仍然需要使用IEnumerable
作爲方法參數或返回類型。
例如,你有一個返回類型IEnumerable<T>
如果你返回不可查詢,因爲你叫AsEnumerable
或ToList
,但你不希望透露執行細節數據 - 但我更喜歡再在這種情況下爲IReadOnlyList<T>
。
相關問題
- 1. .NET實體框架 - IEnumerable VS. IQueryable
- 2. 什麼時候你會首先使用實體框架代碼
- 3. 什麼時候multimap優先於map?
- 4. 實體框架IQueryable
- 5. 實體框架代碼優先的NullReferenceException
- 6. 查找的IQueryable和實體IEnumerable的框架
- 7. 實體框架,MySQL和IQueryable
- 8. 實體框架建模代碼優先
- 9. 實體框架代碼優先使用
- 10. 實體框架代碼優先映射
- 11. 實體框架,代碼優先和datetimes
- 12. 與實體框架代碼優先
- 13. 在實體框架代碼優先4.1
- 14. 映射實體框架「代碼優先」
- 15. 實體框架代碼優先 - 界面
- 16. 實體框架 - 代碼優先Fluent API:ErrorMessage?
- 17. 實體框架 - 代碼優先方法
- 18. 實體框架與數據庫優先
- 19. 播種實體框架代碼優先
- 20. 實體框架+ PostgreSQL代碼優先
- 21. 實體框架代碼優先 - 關係
- 22. MySql和實體框架代碼優先
- 23. 實體框架中的一次性實體代碼優先
- 24. 實體框架的IQueryable - 具體日期
- 25. 實體框架中的SQL'時間'類型代碼優先
- 26. 實體框架:數據庫優先/代碼優先混合
- 27. 實體框架,數據庫優先還是模型優先?
- 28. 實體框架端口從模型優先到代碼優先
- 29. 代碼優先或模型優先(實體框架/ RIA服務)
- 30. 實體框架5,代碼優先,全文搜索,但通過CreateQuery IQueryable?