.NET Framework アプリケーションでトランザクションを使用してデータを保存する

Note

データセットと関連クラスは、アプリケーションがデータベースから切断されている間にアプリケーションがメモリ内のデータを操作できるようにする、2000 年代初期からのレガシ .NET Framework テクノロジです。 テクノロジが特に役立つのは、ユーザーがデータを変更し、変更をデータベースに戻して保持できるようにするアプリケーションです。 データセットは非常に優れたテクノロジであることが証明されていますが、新しい .NET アプリケーションでは Entity Framework Core を使用することをお勧めしています。 Entity Framework には、オブジェクト モデルとして表形式データを操作する、より自然な方法が用意されており、よりシンプルなプログラミング インターフェイスが備わっています。

トランザクションのデータは、System.Transactions 名前空間を使用して保存します。 TransactionScope オブジェクトを使用して、自動的に管理されるトランザクションに参加します。

プロジェクトは System.Transactions アセンブリへの参照を使用して作成されるわけではないため、トランザクションを使用するプロジェクトへの参照を手動で追加する必要があります。

トランザクションを実装する最も簡単な方法は、using ステートメントで TransactionScope オブジェクトをインスタンス化することです (詳細については、「Using ステートメント」および「using ステートメント」を参照してください)。using ステートメント内で実行されるコードは、トランザクションに参加します。

トランザクションをコミットするには、using ブロックの最後のステートメントとして Complete メソッドを呼び出します。

トランザクションをロールバックするには、Complete メソッドを呼び出す前に例外をスローします。

System.Transactions.dll への参照を追加するには

  1. [プロジェクト] メニューの [参照の追加] を選択します。

  2. [.NET] タブ (SQL Server プロジェクトの [SQL Server] タブ) で、[System.Transactions][OK] の順に選びます。

    System.Transactions.dll への参照がプロジェクトに追加されます。

トランザクションのデータを保存するには

  • トランザクションを含む using ステートメント内にデータを保存するコードを追加します。 次のコードでは、using ステートメントで TransactionScope オブジェクトを作成およびインスタンス化する方法を示します。

    using (System.Transactions.TransactionScope updateTransaction = 
        new System.Transactions.TransactionScope())
    {
        // Add code to save your data here.
        // Throw an exception to roll back the transaction.
    
        // Call the Complete method to commit the transaction
        updateTransaction.Complete();
    }