トランザクション (LINQ to SQL)
更新 : November 2007
LINQ to SQL では、3 種類のトランザクション モデルがサポートされています。チェックが行われる順に、これらのモデルを以下に示します。
明示的なローカル トランザクション
SubmitChanges が呼び出されたときに Transaction プロパティが (IDbTransaction) トランザクションに設定されている場合、同じトランザクションのコンテキストで SubmitChanges 呼び出しが実行されます。
トランザクションの実行が終了したら、ユーザーがトランザクションをコミットまたはロールバックする必要があります。トランザクションに対応する接続は、DataContext を構築するのに使用した接続に一致する必要があります。異なる接続が使用されると、例外がスローされます。
明示的な分散トランザクション
アクティブな Transaction のスコープの中で LINQ to SQL API (SubmitChanges など) を呼び出すことができます。LINQ to SQL は、呼び出しがトランザクションのスコープにあることを検出し、新しいトランザクションを作成しません。この場合、LINQ to SQL は、接続を終了することも避けます。このようなトランザクションのコンテキストで、クエリと SubmitChanges の実行が可能です。
暗黙のトランザクション
SubmitChanges を呼び出すと、LINQ to SQL は、呼び出しが Transaction のスコープにあるかどうか、または Transaction プロパティ (IDbTransaction) がユーザーによって開始されたローカル トランザクションに設定されているかどうかをチェックします。どちらのトランザクションも見つからない場合、LINQ to SQL はローカル トランザクション (IDbTransaction) を開始し、それを使用して、生成された SQL コマンドを実行します。すべての SQL コマンドが終了すると、LINQ to SQL はローカル トランザクションをコミットして戻ります。
参照
処理手順
方法 : データ送信をトランザクションで囲む (LINQ to SQL)