TransactionScopeクラスで、暗黙的な分散トランザクション制御ができます。
アプリケーションの手順
TransactionScopeオブジェクトを作成します。
コネクション1のデータ操作。
コネクション1を確立します。
コネクション1でデータの追加操作を行います。
コネクション1をクローズします。
コネクション2のデータ操作。
コネクション2を確立します。
コネクション2でデータの追加操作を行います。
コネクション2をクローズします。
TransactionScopeオブジェクトのComplete()メソッドを呼び出して、トランザクションがコミットできる状態であることをトランザクションマネージャに伝えます。
TransactionScopeオブジェクトを破棄します。
アプリケーションの同期化
// 1.TransactionScopeのコンストラクタでTransactionScopeオブジェクトを作成して、分散トランザクションを開始する。
using (TransactionScope tran = new TransactionScope())
{
//トランザクションに参加する接続文字列にenlistキーワードを指定する。
string connString1 = "DATA SOURCE=127.0.0.1;PORT=26551;" +
"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01;ENLIST=TRUE";
string connString2 = "DATA SOURCE=127.0.0.1;PORT=26551;" +
"INITIAL CATALOG=TEST2;USER ID=USER02;PASSWORD=PASS02;ENLIST=TRUE";
//2. 接続1のデータ操作
SymfowareConnection conn1 = new SymfowareConnection(connString1);
//2-1. コネクションの確立
conn1.Open();
//2-2. データの追加操作を行う
SymfowareCommand com1 = new SymfowareCommand("INSERT INTO SAMPLE1.TESTTBL VALUES(133," +
"500.001,DATE'2007-04-10','TEST DATA')", conn1);
com1.ExecuteNonQuery();
//2-3. コネクションのクローズ
conn1.Close();
//3. 接続2のデータ操作
SymfowareConnection conn2 = new SymfowareConnection(connString2);
//3-1. コネクションの確立
conn2.Open();
//3-2. データの追加操作を行う
SymfowareCommand com2 = new SymfowareCommand("INSERT INTO SAMPLE2.TESTTBL2 VALUES(133, +
'TARO')", conn2);
com2.ExecuteNonQuery();
//3-3. コネクションのクローズ
conn2.Close();
//4.トランザクションがコミットできる状態であることをトランザクションマネージャに伝える
tran.Complete();
}//5. TransactionScopeオブジェクトの破棄
Thread.Sleep(5000); //6.アプリケーションの同期化