小编Doo*_*fin的帖子

使用对象初始化构造的嵌套事务范围导致错误

在我的 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);
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我像这样构造 TransactionScope 对象,则会出现异常:

public static TransactionScope CreateTransactionScope()
{
   var transactionOptions = new TransactionOptions
   {
      IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted,
      Timeout = TransactionManager.MaximumTimeout
   };
   return new TransactionScope(TransactionScopeOption.Required, transactionOptions);
}
Run Code Online (Sandbox Code Playgroud)

错误内容为:“为 TransactionScope 指定的事务的 IsolationLevel 与为范围请求的值不同。参数名称:transactionOptions.IsolationLevel ”。

谁能向我解释为什么使用对象初始化会导致这种行为?

.net c# transactionscope object-initialization

5
推荐指数
1
解决办法
2620
查看次数