有關EF的另一個問題:實體框架 - 幕後:數據讀取器和連接生命週期
我想知道在迭代查詢結果時幕後會發生什麼。
例如,請參閱下列代碼:
var activeSources = from e in entitiesContext.Sources
where e.IsActive
select e;
然後:
foreach (Source currSource in allSources)
{
code based on the current source...
}
重要提示:每次迭代需要一段時間才能完成(從1至25秒)。
現在,我假設EF基於DataReaders以獲得最大效率,所以基於這一假設,我認爲在上述情況下,數據庫連接將保持打開狀態,直到完成迭代結果爲止,這將是很長一段時間(用代碼說話時),這是我顯然不想要的。
是否有一種方法來獲取整個數據,就像我用普通的舊ADO.NET DataAdapters,DataSet和fill()方法取代使用DataReaders一樣?
或者,也許我的方式與我的假設?
在任何情況下,如果可以的話,我都會喜歡指出一個很好的解釋。
感謝,
米奇
「的ToList(IEnumerable的)方法強制立即查詢評估,並返回包含查詢results.You可以追加這個方法來查詢,以獲得查詢結果的緩存副本列表。 「 –
Guillaume
謝謝,感謝:) –