0

型付きデータセットでTransactionScopeを使用することは可能ですか?

のように:

using (var transaction = new TransactionScope())
{
    typedDataSet.DeleteStuff(id);

    typedDataSet2.DeleteSomeOtherStuff(id2);

    transaction.Complete();
}

エラーがスローされた場合、DeleteStuff(id)およびDeleteSomeOtherStuff(id)に関連するSQLクエリは実際にトランザクションになりますか?

強い型のデータセットでのトランザクションの使用に関するBogdanChernyachukのこの記事を読みましたが、この方法で行う必要がないことを望んでいます。

4

1 に答える 1

0

簡単な答え:はい、これはトランザクションです。

テストするのも難しくありませんでした。transaction.Complete()の直前に例外をスローしましたが、データはデータベースから削除されませんでした。

using (var transaction = new TransactionScope())
{
    typedDataSet.DeleteStuff(id);

    typedDataSet2.DeleteSomeOtherStuff(id2);
    throw new NullReferenceException();
    transaction.Complete();
}

奇妙なことに、SQL SERVER Profilerを使用してデータベースで何が起こっているかをプロファイリングし、型指定されたデータセットを介して参照されたストアドプロシージャがサーバー上で実行されました。ただし、データはどういうわけかロールバックされました。

于 2012-07-06T14:41:49.083 に答える