在我的C#代码中,我正在使用嵌套事务范围。我有一个实用类,可以完全相同地创建TransactionScope对象。外部范围和内部范围都是以完全相同的方式构建的。
如果我像下面的第一个示例那样构造TransactionScope对象,嵌套的事务范围将很好地协同工作:
然而,如果我像这样构造TransactionScope对象,就会出现异常:
错误信息为:“为TransactionScope指定的事务具有与作用域请求的值不同的隔离级别。参数名:transactionOptions.IsolationLevel”。
有人能否解释一下为什么使用对象初始化会导致这种情况发生?
如果我像下面的第一个示例那样构造TransactionScope对象,嵌套的事务范围将很好地协同工作:
public static TransactionScope CreateTransactionScope()
{
var transactionOptions = new TransactionOptions();
transactionOptions.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
transactionOptions.Timeout = TransactionManager.MaximumTimeout;
return new TransactionScope(TransactionScopeOption.Required, transactionOptions);
}
然而,如果我像这样构造TransactionScope对象,就会出现异常:
public static TransactionScope CreateTransactionScope()
{
var transactionOptions = new TransactionOptions
{
IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted,
Timeout = TransactionManager.MaximumTimeout
};
return new TransactionScope(TransactionScopeOption.Required, transactionOptions);
}
错误信息为:“为TransactionScope指定的事务具有与作用域请求的值不同的隔离级别。参数名:transactionOptions.IsolationLevel”。
有人能否解释一下为什么使用对象初始化会导致这种情况发生?