問題
在使用 Entity Framework 5.0 查詢並新增資料時,發生了這樣的例外
New transaction is not allowed because there are other threads running in the session
原因
經 Google 大神的查訪後,這篇告訴我們,原來當資料筆數多時,原來的connection 尚未 close,程式卻可能執行到新的 SaveChange 了,而引發新的 transaction。
例如
var payments = from i in _context.Payments select i; foreach (var payment in payments) { ... _context.SaveChanges(); }
解法
只要簡單的強迫 ToList(),將資料先查詢出來即可
var payments = (from i in _context.Payments select i).ToList(); foreach (var payment in payments) { ... _context.SaveChanges(); }
沒有留言:
張貼留言