データベーステーブルへの単一行のコミットを実行する次のコードがあります(SQL 2008 / .NET 4)
using (var db = new MyDbDataContext(_dbConnectionString))
{
Action action = new Action();
db.Actions.InsertOnSubmit(dbAction);
db.SubmitChanges();
}
通常はすべて問題ありませんが、たまに次の例外が発生します。
System.InvalidOperationException: This SqlTransaction has completed; it is no longer usable.
at System.Data.SqlClient.SqlTransaction.ZombieCheck()
at System.Data.SqlClient.SqlTransaction.Rollback()
at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
SOには同様の質問がたくさんありますが、それらを読んだ後、原因を突き止めることができません。
これは単に SQL タイムアウトが原因でしょうか (呼び出しが行われてから 25 秒近く後に例外が発生します)? または、その場合、SQL タイムアウト例外を予期する必要がありますか?
他に何が原因なのか誰か知っていますか?