嘗試使用LinqToSql添加行時,我得到一個InvalidOperationException
。我們不能在內部複製它,只有我們的一個客戶發生約0.06%的情況,總是對數據庫進行相對簡單的更改。 (單列插入或單個字段更新)Linq DataContext SubmitChanges從ZombieCheck發出InvalidOperationException
Message:
This SqlTransaction has completed; it is no longer usable.
Stack Trace:
at System.Data.SqlClient.SqlTransaction.ZombieCheck()
at System.Data.SqlClient.SqlTransaction.Rollback()
at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
下面是代碼的樣品片(數據庫自動生成的主鍵)
TableName row = new TableName();
row.Description = "something";
row.Action = "action";
Context.TableName.InsertOnSubmit(row);
Context.SubmitChanges();
我們使用SQL Server 2008 R2。插入和更新確實通過服務器。但我們仍然得到例外。沒有什麼應該阻止這些更新和插入的發生。沒有依賴或其他東西。
我們如何阻止這些異常/殭屍檢查/回滾事件的發生,或者是什麼導致他們擺在首位?
編輯:
經過進一步檢驗,即正由的SubmitChanges完成的數據庫更新()實際發生。事務成功完成後,將調用此異常,並將數據庫行更新爲新值。
這是否只發生在特定的代碼塊中?如果是這樣的話,它是否在任何一點的「使用」塊內? – 2013-03-12 02:23:23
我們所有的數據庫更新函數都調用一個通用函數來執行DataContext SubmitChanges()。所以它始終是失敗的同一行代碼。 – David 2013-03-12 15:01:05