私は使っている:
public class TransactionUtils
{
public static TransactionScope CreateTransactionScope()
{
var TransactionOptions = new TransactionOptions();
TransactionOptions.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
TransactionOptions.Timeout = TimeSpan.MaxValue;
return new TransactionScope(TransactionScopeOption.Required, TransactionOptions);
}
}
すべてのトランザクションを作成します。私が直面している問題は、 2 をネストTransactionUtils.CreateTransactionScope()
するとエラーが発生することです: Time-out interval must be less than 2^32-2. Parameter name: dueTm
. これは、子トランザクションを親トランザクションにアタッチしようとしていて、組み合わせたタイムアウトが大きすぎるためだと思います。
タイムアウトの設定を避けるために、新しく作成されたトランザクションがネストされたトランザクションになるかどうかを確認する方法はありますか?
別の方法は、パラメーターを渡すことです。これにより、パラメーターCreateTransactionScope()
がネストされていてタイムアウトを設定していないことを伝えることができますが、それを自動的に処理する方法を見つけたいと思います。