2015-06-30 216 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。