我有這個簡單的代碼:由於會話中還有其他線程正在運行,因此不允許新的事務。實體框架
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())
但是,當我做到了,代碼沒」根本不工作。我該如何做這項工作?謝謝。
'在_sdb.Vars' VAR MYVAR將拋出錯誤爲'sdb.Vars'是迭代'IQueryable'和你試圖修改它的狀態。 'foreach(var myvar in _sdb.Vars.ToList())'應該可以工作,但是取決於你在'AreaCheck(myvar)'方法中做什麼。請添加該代碼。另外,將'_sdb.SaveChanges();'移到'foreach'外部以避免多個數據庫匹配 – Developer
「但是當我做到了,代碼根本無法工作」 - 沒有工作怎麼辦? – Evk