トランザクションは複数のタスクをバインドします。 たとえば、あるアプリケーションが 2 つのタスクを実行するものとします。 まず、データベースに新しいテーブルを作成します。 次に、特殊化されたオブジェクトを呼び出して、新しいテーブルにデータを収集、書式設定、挿入します。 これら 2 つのタスクは関連しており、相互に依存しているため、データを入力できない限り、新しいテーブルを作成しないようにします。 1 つのトランザクションのスコープ内で両方のタスクを実行すると、それらの間の接続が強制されます。 2 番目のタスクが失敗した場合、最初のタスクは新しいテーブルが作成される前のポイントにロールバックされます。
予測可能な動作を保証するには、すべてのトランザクションに基本的な ACID プロパティ (原子性、一貫性、分離性、持続性) が必要です。 これらのプロパティは、ミッションクリティカルなトランザクションの役割を、一か八かの判断として強化します。 ACID の詳細については、「 ACID プロパティ」を参照してください。 要約すると、ACID は、関連する一連のタスクが 1 つの単位として成功または失敗することを保証します。 トランザクション処理の用語では、トランザクションはコミットまたは中止します。 トランザクションをコミットするには、すべての参加者がデータの変更が永続的であることを保証する必要があります。 システム クラッシュその他の予期しない出来事が発生した場合でも、変更は保持されます。 1 人の参加者でもこの保証に失敗した場合、トランザクション全体が失敗します。 トランザクションのスコープ内のデータに対するすべての変更は、特定のセット ポイントにロールバックされます。
トランザクションは、データベースやメッセージ キューなどの単一のデータ リソースに限定できます。 このシナリオでは、ローカル トランザクションは、 System.Transactions によって提供されるトランザクション マネージャーによって管理され、パフォーマンスが向上します。 これらのトランザクションは、データ リソースによって制御され、効率的で簡単に管理できます。
トランザクションは、複数のデータ リソースにまたがることもできます。 分散トランザクションを使用すると、異なるシステムで発生するいくつかの個別の操作を 1 つの成功または失敗アクションに組み込むことができます。 このシナリオでは、トランザクションは、各システムに存在する Microsoft 分散トランザクション コーディネーター (MSDTC) によって調整されます。
System.Transactionsによって提供されるクラスを使用してトランザクション アプリケーションを開発する場合、必要なトランザクションの種類や関係するトランザクション マネージャーについて心配する必要はありません。 System.Transactions インフラストラクチャがこれらを自動的に管理します。
トランザクションを作成するときに、トランザクションに適用される分離レベルを指定できます。 IsolationLevel列挙型によって定義される分離レベルによって、トランザクションの影響を受けるデータに対して他のトランザクションが必要とするアクセス レベルが決まります。
System.EnterpriseServices名前空間によって提供される ADO.NET、System.Transactions、またはトランザクション プログラミング モデルを使用してトランザクションを作成できます。 「System.Transactions によって提供される機能」トピックでは、System.Transactions名前空間を使用してトランザクション アプリケーションを作成するために使用できる機能について説明します。
こちらも参照ください
.NET