在我的 C# 代码中,我使用嵌套事务范围。我有一个同样创建 TransactionScope 对象的实用程序类。外部作用域和内部作用域的构造方式完全相同。
如果我像下面的第一个示例那样构造 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 指定的事务具有与为范围请求的值不同的 IsolationLevel。参数名称:transactionOptions.IsolationLevel ”。
谁能向我解释为什么使用对象初始化会导致这种行为?