首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不允许执行新事务,因为会话LINQ To实体中正在运行其他线程

不允许执行新事务,因为会话LINQ To实体中正在运行其他线程
EN

Stack Overflow用户
提问于 2012-04-11 05:09:35
回答 2查看 86.7K关注 0票数 148

有什么想法可以解释为什么它会崩溃吗?

foreach (var p in pp)
{
    ProjectFiles projectFile = (ProjectFiles)p;
    projectFile.Status = Constants.ProjectFiles_ERROR;
    projectFile.DateLastUpdated = DateTime.Now;
    context.SaveChanges();
}

我读到这个问题的解决方法是在foreach循环之前一次性检索结果。

但我不是这么做的吗?在我的例子中,"pp“是结果的集合

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-11 05:14:02

pp变量不是对象的集合,它是一个可以返回对象的枚举器。使用枚举器时,源必须保持打开状态。

使用ToList方法将枚举器实现为集合。这将读取枚举数中的所有项,并关闭与源的连接,以便您可以将该连接用于其他事情。

foreach (var p in pp.ToList())
票数 377
EN

Stack Overflow用户

发布于 2015-04-08 20:46:36

解决这个问题的一种方法是在迭代集合之前在集合上调用.ToList()

在此过程中,在循环退出后只调用context.SaveChanges()一次,以加快代码速度。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10096509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档