在实体框架查询期间修改数据库表
本文关键字:修改 数据库 实体 框架 查询 | 更新日期: 2023-09-27 18:00:40
假设我有一个实体框架上下文context
,并执行以下操作:
foreach (var item in context.Set<MyObject>())
DoSomethingThatTakesTenSeconds();
- 执行此操作时,我可以向SSMS中的
dbo.MyObject
添加新行吗?如果是,它们是否在循环中被拾取 - 执行此操作时,我可以删除SSMS中
dbo.MyObject
中的行吗?循环还会尝试获取它们吗 - EF/ADO.NET堆栈的什么级别决定了这个问题的答案
当您访问IQueryable<T>
中的第一个项目时,将对数据库执行查询,并将结果具体化为对象集合。对数据库的任何修改都不会更改该集合。回答您的问题:
1) 您可以添加新对象,但这些对象不会拾取。
2) 您可以删除对象,它们将处于循环中。
3) 这是IQueryable<T>
的工作方式,而不是EF/ADO.NET。