ビジネス層でTransactionScopeクラスを使用して、データアクセス層でのデータベース操作を管理したいと考えています。
これが私のサンプルコードです。実行すると、dtcを有効にしようとします。dtcを有効にせずに操作したい。
https://entlib.codeplex.com/discussions/32592の記事をすでに確認しました。それは私にはうまくいきませんでした。私はこのテーマに関する多くの記事を読みましたが、それらのどれも実際にエンタープライズライブラリに触れていないか、私は見ませんでした。
ちなみに、私はdotnet sql clientを使用してTransactionScopeを使用することができ、それはかなりうまく機能します。
SampleInsert()メソッドの内部は何でしょうか?
ありがとう、
ビジネスレイヤー方式:
public void SampleInsert()
{
using (TransactionScope scope = new TransactionScope())
{
Sample1DAL dal1 = new Sample1DAL(null);
Sample2DAL dal2 = new Sample2DAL(null);
Sample3DAL dal3 = new Sample3DAL(null);
dal1.SampleInsert();
dal2.SampleInsert();
dal3.SampleInsert();
scope.Complete();
}
}
データアクセス層方式:
//sampleInsert method structurally same for each 3 dal
public void SampleInsert()
{
Database database = DatabaseFactory.CreateDatabase(Utility.DATABASE_INFO); ;
using (DbConnection conn = database.CreateConnection())
{
conn.Open();
DbCommand cmd = database.GetStoredProcCommand("P_TEST_INS", "some value3");
database.ExecuteNonQuery(cmd);
}
}