假设我有一个实体框架上下文context
,并执行以下命令:
foreach (var item in context.Set<MyObject>())
DoSomethingThatTakesTenSeconds();
dbo.MyObject
添加新行吗?如果是这样,他们是否在循环中被选中? dbo.MyObject
中的行吗?循环仍然会尝试获取它们吗?答案 0 :(得分:1)
当您访问IQueryable<T>
中的第一项时,将对数据库执行查询,并将结果具体化为对象集合。对数据库的任何修改都不会更改该集合。您的问题的答案:
1)您可以添加新对象,但不会拾取它们。
2)你可以删除对象,它们将循环播放。
3)IQueryable<T>
是如何工作的,特别是EF / ADO.NET。