2 つのテーブル (ヘッダーと詳細) を更新するWCFサービス メソッドを作成しています。操作がアトミックであることを確認する必要があるため、挿入を取り巻くトランザクションを開始しました。
ただし、これは Web サービス メソッドであるため、このトランザクションが使用されているときに、他のユーザーが同じ関数を呼び出すことができます。
追加情報として、再利用のために接続をセッションに保存するカスタムORMのようなフレームワークを使用しています。
2 番目の Web メソッド呼び出しが発生すると、次の例外が発生します。
System.Data.SqlClient.SqlException (0x80131904): セッションで他のスレッドが実行されているため、新しいトランザクションは許可されません。
最初の呼び出しで開始されたトランザクションがまだ完了していないためだと理解しています。
Web サービスでデータベース トランザクションを使用するためのベスト プラクティスとは何か、また、毎回新しい接続を作成することなくこの状況を改善できるかどうかを理解したいと考えています。