【问题标题】:How to get isolation level in EF for MSSQL?如何在 EF 中为 MSSQL 获取隔离级别?
【发布时间】:2019-08-13 11:53:23
【问题描述】:

我正在使用 EF 在 LINQ 的帮助下访问 MS SQL 数据。如何获得当前的隔离级别?例如这段代码:

var level = 
Database.Connection.UnderlyingTransaction.IsolationLevel.ToString();

给我错误 - System.NullReferenceException: Object reference not set to an instance of an object.

据我了解 - UnderlyingTransaction 为空,因为我没有在我的 LINQ 代码中使用任何事务。

【问题讨论】:

  • UnderlyingTransaction 是连接的一个属性。这与 LINQ 有什么关系?
  • 如果没有事务,为什么需要隔离级别?
  • @JamieRees - 只需要了解我是否可以读取未提交的数据...
  • @DenisRubashkin - 我不想设置级别,我只想读取一个值

标签: c# sql-server linq isolation-level


【解决方案1】:

我找不到如何使用 EF 属性或方法获取当前隔离级别,因此我们可以为此使用自定义 SQL 查询,例如:

public class UserOptionsMsSql
{
    [Column("Set Option")]
    public string SetOption { get; set; }

    public string Value { get; set; }
}

var resultsList = 
service.GetDataContext().Database.SqlQuery<UserOptionsMsSql>
("DBCC USEROPTIONS;").ToList();

var resultLevel =  resultsList[11] == null ? "unknown":resultsList[11].Value ;

当然我们可以使用任何other custom SQL scripts ...

【讨论】:

    猜你喜欢
    • 2011-06-24
    • 1970-01-01
    • 2021-12-04
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 2010-12-04
    • 2018-11-16
    相关资源
    最近更新 更多