我正在使用:
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);
}
}
我使用TransactionUtils.CreateTransactionScope()
来创建所有的交易。但是当我嵌套两个TransactionUtils.CreateTransactionScope()
时,会出现错误:Time-out interval must be less than 2^32-2. Parameter name: dueTm
。我猜测是由于它尝试将子事务附加到父事务上,导致了组合超时时间过长。
有没有一种方法可以判断新创建的事务是否是嵌套事务,以便我可以避免设置超时时间?
另一种方法是向CreateTransactionScope()
传递一个参数,以便我可以告诉它这是一个嵌套事务,并且不设置超时时间,但我更希望找到自动处理它的方法。
TimeSpan.MaxValue
部分吗?也许这会有所帮助:http://stackoverflow.com/questions/1963934/error-time-out-interval-must-be-less-than-232-2-parameter-name-duetm - V4Vendetta