【问题标题】:TransactionScope Out of range valid value transalationIsolation errorTransactionScope 超出范围有效值translationIsolation错误
【发布时间】:2021-07-12 04:03:38
【问题描述】:

所以我有这个对数据库的读取查询,我想为 ORM 指定一个 NO-LOCK(EF、Npoco、Nhibernate、LinqToSql),因此我将它包装在事务范围中并指定了事务选项,即ReadUncommitted (NOLOCK) 的枚举 [所有努力防止数据库死锁]

挑战是我得到一个异常“指定的参数超出了有效值的范围。参数名称:transactionIsolationLevel”即使transactionScope构造函数基于所需的值是正确的。

我不会退出 IsolationLevel 枚举,因此我不希望在运行时引发超出范围的异常。

如果您遇到过此类错误或熟悉类似的情况。请提供帮助。

谢谢,下面是代码示例。 [Using scope As Transactions.TransactionScope = New Transactions.TransactionScope(Transactions.TransactionScopeOption.Required, transactionOptions)]抛出异常

            Dim transactionOptions = New Transactions.TransactionOptions()
            transactionOptions.IsolationLevel = IsolationLevel.ReadUncommitted
            transactionOptions.Timeout = Transactions.TransactionManager.MaximumTimeout
    
            Using scope As Transactions.TransactionScope = New Transactions.TransactionScope(Transactions.TransactionScopeOption.Required, transactionOptions)
                Using db As New DbContext
    
                  'Ambient transaction
                End Using
            End Using

【问题讨论】:

  • 可能是您的底层数据提供者不支持Read Uncommitted 隔离级别。你的数据库引擎是什么?
  • 它甚至还没有到达数据库调用,数据库引擎:SQL Server (MSSQLSERVER)

标签: c# asp.net asp.net-mvc vb.net asp.net-core


【解决方案1】:

是的,所以答案是将 transactionScope 移动到一个新类中,因为存在应该基于引用工作的事务冲突,但它令人惊讶地导致了错误。

最后,我使用了存储过程(更快更整洁)

【讨论】:

    猜你喜欢
    • 2022-11-26
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    相关资源
    最近更新 更多