繁体   English   中英

实体框架6代码优先并发

[英]Entity Framework 6 Code First Concurrency

我正在考虑将Entity Framework 6用于新项目。

在开发表时,我们添加了一个int类型的更新计数器,并且在执行更新时,我们检查它是否没有更改,并在成功更新后对其进行递增。

通过阅读,可以通过将ConcurrencyCheck属性添加到更新计数器属性来进行检查,但是如何在成功更新后执行增量操作?

还是应该只使用Rowversion列?

此Microsoft博客文章包含指向许多EF6和MVC指南的链接。 特别要注意的是实体框架6的处理并发 该指南使用的是ASP.Net MVC项目,但是数据库原理应适用于几乎所有类型的项目。

简而言之,尽管如此,如果您使用ConcurrencyCheck属性,则不必自己更新任何计数器-但这会增加应用程序数据库操作的开销,因为在幕后,EF会推断出每个SQL查询以包括对属性的并发检查您已将ConcurrencyCheck属性应用到的对象。 如果表很大(许多列),则可能导致应用程序性能降低。

更好的方法是让您在代码优先类的字节数组属性上使用TimeStamp属性(或者,如果使用Fluent API,则在属性上设置IsConcurrencyToken() )。 然后,如果发生并发冲突,EF将抛出DbUpdateConcurrencyException由您自己决定是如何捕获并相应地处理它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM