Nic*_*rca 140 c# linq linq-to-entities
关于为什么这可能会破裂的任何想法?
foreach (var p in pp)
{
ProjectFiles projectFile = (ProjectFiles)p;
projectFile.Status = Constants.ProjectFiles_ERROR;
projectFile.DateLastUpdated = DateTime.Now;
context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
我读到问题的解决方法是在foreach循环之前一次性检索结果.
但我不这样做吗?"pp"是我案例中的结果集合
Guf*_*ffa 360
该pp变量不是对象的集合,它是一个枚举,可以返回的对象.使用枚举器时,源必须保持打开状态.
使用该ToList方法将枚举器实现为集合.这将读取枚举器中的所有项目并关闭与源的连接,以便您可以将连接用于其他内容.
foreach (var p in pp.ToList())
Run Code Online (Sandbox Code Playgroud)
Cap*_*chi 10
发生的事情是您使用一个SQL连接迭代一组db实体,然后使用另一个连接来保存更改.发生这种情况是因为您的类基本上与您的数据库连接的一个实例"结合",并且不能被另一个实例更改.
解决这个问题的一种方法是在迭代之前调用集合上的.ToList().
当你在它的时候,.ToList()在循环退出后只调用一次以加速代码.
| 归档时间: |
|
| 查看次数: |
78468 次 |
| 最近记录: |