2015-10-08 83 views

回答

1

有三種情況想到。

  1. 當EF無法將您的查詢轉換爲正確的SQL語句時 - 因此您需要將結果存入內存以完成計算。
  2. 當您需要執行涉及不轉換爲SQL的操作符的操作時。
  3. 當SQL服務器在生成計算時比在內存中計算時慢。很多時候我發現將所有數據拉入內存比讓SQL執行更快。
1

提供的數據源(如IQueryable)可以查詢,那麼,使用IQueryable - 雖然你不應該創建IQueryable實例或實現它自己,這就是EF是。如果您使用帶有外部數據源或其他本身無法查詢的數據的EF,例如JOIN帶有非EF數據的EF表,則仍然需要使用IEnumerable作爲方法參數或返回類型。

例如,你有一個返回類型IEnumerable<T>如果你返回不可查詢,因爲你叫AsEnumerableToList,但你不希望透露執行細節數據 - 但我更喜歡再在這種情況下爲IReadOnlyList<T>