LinqToSqlInvalidOperationException
を使用して行を追加しようとすると、エラーが発生します。社内で複製することはできません。データベースへの比較的単純な変更で、約 0.06% 発生するのは 1 人のお客様だけです。(単一行の挿入、または単一フィールドの更新)
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() によって行われたデータベースの更新が実際に行われています。この例外は、トランザクションが正常に完了した後に呼び出され、データベース行が新しい値に更新されます。