2

こんにちは、TransactionScope を使用したトランザクションがコミットまたはロールバックされたかどうかを確認する方法はありますか?

4

3 に答える 3

0

はい。変数を追加してチェックするだけです。

bool txExecuted;

using (var tx = new TransactionScope())
{
 //code
 if (code was OK)
 {
   tx.Complete();
   txExecuted = true;
 }

}
于 2013-11-08T18:15:04.567 に答える
0

msdn ドキュメントについて https://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.complete(v=vs.110).aspx

// Complete メソッドはトランザクションをコミットします。例外がスローされた場合、
// Complete は呼び出されず、トランザクションはロールバックされます。

completeCallback メソッドは、successfull tr​​ansactionScope.Complete() メソッドの実行後にのみ呼び出されます

したがって、関数を使用できます:

public bool TryRunTransaction(Action transactionAction)
    {
        try
        {
            using (var transactionScope = new TransactionScope())
            {
                transactionAction();
                transactionScope.Complete();
            }
            return true;
        }
        catch (TransactionAbortedException)
        {
            return false;
        }
    }
于 2017-06-22T13:18:55.387 に答える