禁用所有实体框架4.1乐观并发检查的设置

3

我使用了基于模型的方法,使用DBContext创建EF 4.1数据模型。 我想在整个数据库中关闭乐观并发检查,因为我不需要它。

最简单的方法是什么? 我希望通过设计器来完成,但如果不可能,也许有一种DBContext / ObjectContext的方式可以实现这一点?

请帮帮我,谢谢。

1个回答

2
默认情况下没有乐观并发控制。如果您想使用并发检查,必须在模型中进行配置-每个属性都具有“并发模式”配置,默认为“无”。除非将其更改为“固定”值,否则不会使用乐观并发控制。也没有全局配置可用于开启或关闭并发检查。

嗯,那不对,因为在某些情况下我收到了乐观并发异常(OptimisticConcurrencyExceptions),而且我已经验证了并发模式设置为无(None)。还有其他想法吗? - user1050999
你必须确定为什么会出现异常。你执行了哪些操作?例如,如果你尝试修改已经被删除的实体,就会发生这种情况。在这种情况下,你必须处理错误 - 没有办法避免它。 - Ladislav Mrnka
我仍然感到困惑,如果默认情况下未开启乐观并发检查,为什么会首先引发乐观并发异常?我检查了整个.edmx文件,以确保没有任何属性设置为Concurrency Mode = fixed。 - user1050999
EF仍然检查row_count以验证更改影响的行数是否正确。它假定获取不正确的行计数的唯一方法是出现并发问题。但是,如果您有可能影响数据库中行计数的触发器,则此假设是不正确的。 - Kevin Coulombe
行数不受触发器影响。 - Ladislav Mrnka
2
这似乎不正确。当我谷歌搜索如何关闭此选项时,我偶然看到了这个答案。在我的情况下,在使用 IGNORE_DUP_KEY = ON 插入表时遇到问题。这个设置是有意的。我只想触发插入并忽略重复键值。插入的行数与发送的行数不匹配会导致不希望出现的 OptimisticConcurrencyException 并回滚事务。 - Martin Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接