次の方法で共有


トランザクション (LINQ to SQL)

LINQ to SQL では、3 種類のトランザクション モデルがサポートされています。 チェックが行われる順に、これらのモデルを以下に示します。

明示的なローカル トランザクション

SubmitChanges が呼び出されたときに Transaction プロパティが (IDbTransaction) トランザクションに設定されている場合、同じトランザクションのコンテキストで SubmitChanges 呼び出しが実行されます。

トランザクションの実行が終了したら、ユーザーがトランザクションをコミットまたはロールバックする必要があります。 トランザクションに対応する接続は、DataContext を構築するのに使用した接続に一致する必要があります。 異なる接続が使用されると、例外がスローされます。

明示的な分散トランザクション

LINQ to SQL API (SubmitChanges など) は、アクティブな Transaction のスコープ内で呼び出すことができます。 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)