【发布时间】:2012-04-23 04:50:04
【问题描述】:
关于为什么这可能会破坏的任何想法?
foreach (var p in pp)
{
ProjectFiles projectFile = (ProjectFiles)p;
projectFile.Status = Constants.ProjectFiles_ERROR;
projectFile.DateLastUpdated = DateTime.Now;
context.SaveChanges();
}
我了解到该问题的解决方法是在 foreach 循环之前一次性检索结果。
但我没有这样做吗? “pp”是我的情况的结果集合
【问题讨论】:
-
pp是 linq 查询的结果吗?如果是这样,您可能需要在运行循环之前对其执行ToList()以断开其与数据库的连接。 -
是的。好的,我会试试谢谢
-
在循环外调用保存更改
-
这里只是一个小指针。建议的修复可能通过阻止 EF 在每次保存时不断启动新事务来起作用。但是,它指出了 EF 中的一个问题。这里的逻辑可能不对。您应该在循环保存之前启动事务,然后全部提交,或者最后回滚。除非这当然不是我们想要的逻辑。
标签: c# linq linq-to-entities