これはNested Database transactions in C#に関連しています。私はトランザクションで撮りたいコレクション内のSqlConnection.BeginTransactionとTransactionScopeを混在させることはできますか?
オブジェクトがSqlConnection.BeginTransactionメソッドを使用して、独自のトランザクションを実装します。
このpostを読んだ後、私はあまりにもかされていないものを混在させることができるかどうかわかりません。 私はSQL Server 2005を使用しており、各オブジェクトは静的構成クラスの接続の詳細を使用しています。
誰もこの経験がありますか?ここで
は、サンプルコードは次のとおりです。
using(TransactionScope scope = new TransactionScope())
{
for (int i=0; i<=1000....)
{
SqlConnection con = new SqlConnection()
SqlCommand cmd = new SqlCommand("delete from ...", con);
try {
con.Open();
DbTransaction t = con.BeginTransaction();
cmd.ExecuteNonQuery();
...
cmd.CommandText = .... ;
cmd.ExecuteNonQuery();
t.Commit ...
}
catch {
t.Rollback ...
}
con.Close()
}
}
Thxを
あなたは答えをこの質問の答えにする必要があります - それは許されます! – Fenton
私のケースでは、私たちの開発マシンでは、各テストおよびテストクラスについて考えることなく複雑なデータベース操作を実現し、すべて理論的にロールバックさせるために、「ユニット」テストがTransactionScopeにラップされています。同時に、本番サーバーでのMS DTCの使用を必ずしも望んでいないので、通常のトランザクションでいくつかの複合エンティティフレームワークのエンティティ操作をラップして、失敗した場合でも操作全体がロールバックできるようにしたい...理想的には、TransactionScopeは引き続き動作する必要があります。 – bambams