发出“ SaveChanges()”时,实体框架中的默认事务隔离级别是什么?

| 发出“ SaveChanges()”时,实体框架中的默认事务隔离级别是什么?我在任何地方都找不到。是“可序列化”吗?     
已邀请:
SaveChanges
对当前商店提供者使用
DbTransaction
的实现。这意味着数据库服务器的默认事务隔离级别设置为默认值。在SQL Server中为2。如果要更改隔离级别,可以使用
TransactionScope
。您还可以在派生的上下文中覆盖
SaveChanges
,并将
base.SaveChanges()
直接包裹在覆盖方法中。
public override void SaveChanges()
{
    // Default isolation level for TransactionScope is Serializable
    using (var scope = new TransactionScope())
    {
        base.SaveChanges();
        scope.Complete();
    }
}
您可以进一步改进此代码,以允许将隔离级别传递到“ 0”等。一旦开始更改隔离级别,就应该始终如一。这意味着每次要运行事务时都应定义隔离级别,因为每个连接都配置了隔离级别,并且在使用连接池时将重用连接。 编辑:EF6中的默认交易级别已更改为“ 8”     
默认情况下,System.Transactions基础结构创建可序列化事务。     
从EF 6开始,SQL Server事务的默认隔离级别为READ COMMITTED。参考在这里:实体框架与事务一起使用(EF6及更高版本) 对于其他提供程序(相同的参考),“事务的隔离级别是数据库提供程序认为其默认设置的任何隔离级别”。因此,您将不得不查看该提供程序的文档。     

要回复问题请先登录注册