首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读锁的实体框架类型

读锁的实体框架类型
EN

Stack Overflow用户
提问于 2016-01-13 20:27:24
回答 1查看 635关注 0票数 0

什么是实体框架的默认读锁,以及如何实现可重复读锁。

我在想,也许在某个地方有一个全局设置,以便默认情况下获取类型为可重复读取的读锁,然后在savechanges生效后释放。

这里的What is the default transaction isolation level in Entity Framework when I issue “SaveChanges()”? .Says默认隔离级别是snapshot.How,我是否可以更改为可重复读取。

EN

回答 1

Stack Overflow用户

发布于 2016-01-13 21:44:23

本文还提供了一个如何处理事务示例,这是您需要从隔离模式repeatable read中获得的好处。注意,他们的例子有一个非常糟糕的缺陷,因为它会吞噬任何异常。

下面是他们的例子的修正版本。context应该是从DBContext派生的类的实例。

代码语言:javascript
复制
        using (var dbContextTransaction = 
            context.Database.BeginTransaction(
                System.Data.IsolationLevel.RepeatableRead))
        {
            try
            {
                // Your work here, then

                context.SaveChanges();
                dbContextTransaction.Commit();
            }
            catch
            {
                dbContextTransaction.Rollback();
                throw;
            }
        }

正如Panagiotis Kanavos所警告的那样,应该尽可能避免这种锁定。它降低了可伸缩性,增加了死锁风险,可能会在事务运行时完全阻止其他用户,...

try catch rollback可以被认为是多余的,因为处理正在进行的System.Data.SqlClient.SqlTransaction会导致它回滚( using将确保它被处理)。但是,由于具体事务可能是某种其他类型的事务,这取决于所使用的数据存储,因此在失败的情况下显式回滚它会更安全。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34766739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档