不允许新事务,因为会话中正在运行其他线程。实体框架

时间:2016-11-14 05:26:13

标签: c# entity-framework linq

我有这个简单的代码:

foreach(var myvar in _sdb.Vars)
{
    myvar.Area= AreaCheck(myvar);

    _sdb.Entry(myvar).State = System.Data.Entity.EntityState.Modified;
    _sdb.SaveChanges();
}

当我运行此代码时,我得到了这个例外:

  

不允许使用新事务,因为还有其他线程   在会议中运行。

我用Google搜索了问题,其中一个答案告诉我改变这一行:

foreach(var myvar in _sdb.Vars)

到这一行:

foreach(var myvar in _sdb.Vars.ToList())

但是当我这样做时,代码根本不起作用。我怎样才能做到这一点?感谢。

1 个答案:

答案 0 :(得分:4)

在下面的迭代后保存

using (var _sdb = new MyContext())
{
    foreach (var myvar in _sdb.Vars)
    {
        // Change myvar
    }
     //save at the end
    _sdb.SaveChanges();
}