在实体框架查询期间修改数据库表

时间:2015-06-30 15:33:49

标签: c# sql-server entity-framework

假设我有一个实体框架上下文context,并执行以下命令:

foreach (var item in context.Set<MyObject>())
    DoSomethingThatTakesTenSeconds();
  • 在执行此操作时,我可以在SSMS中向dbo.MyObject添加新行吗?如果是这样,他们是否在循环中被选中?
  • 在执行此操作时,我可以删除SSMS中dbo.MyObject中的行吗?循环仍然会尝试获取它们吗?
  • EF / ADO.NET堆栈的哪个级别决定了这个问题的答案?

1 个答案:

答案 0 :(得分:1)

当您访问IQueryable<T>中的第一项时,将对数据库执行查询,并将结果具体化为对象集合。对数据库的任何修改都不会更改该集合。您的问题的答案:

1)您可以添加新对象,但不会拾取它们。

2)你可以删除对象,它们将循环播放。

3)IQueryable<T>是如何工作的,特别是EF / ADO.NET。