次の方法で共有


トランザクション (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)

その他の技術情報

背景情報 (LINQ to SQL)