2015-06-30 232 views
0

期間修改數據庫表比方說,我有一個實體框架範圍內context,並執行以下命令:實體框架查詢

foreach (var item in context.Set<MyObject>()) 
    DoSomethingThatTakesTenSeconds(); 
  • 我可以在SSMS新行添加到dbo.MyObject雖然這是執行?如果是這樣,他們是在循環中拾起?
  • 我可以在SSMS刪除dbo.MyObject行,而這是執行?循環仍然試圖獲得它們?
  • 什麼級別的EF/ADO.NET堆棧決定了這個問題的答案?

回答

1

當您訪問IQueryable<T>中的第一項時,將針對數據庫執行查詢,並將結果物化爲對象集合。數據庫的任何修改都不會改變該集合。問題的答案:

1)您可以添加新的對象,他們沒有撿到。

2)可以刪除的對象,他們將在循環。

3)它是如何工作IQueryable<T>,尤其是不EF/ADO.NET。