Sco*_*ttD 3 c# ef-code-first entity-framework-6
我正在考虑将 Entity Framework 6 用于一个新项目。
当我们开发我们的表时,我们添加一个 int 类型的更新计数器,并且在执行更新时我们检查它没有改变并在成功更新时增加它。
从我读过的内容来看,我可以通过向更新计数器属性添加 ConcurrencyCheck 属性来进行检查,但是如何在成功更新时执行增量?
或者我应该只使用 Rowversion 列?
这篇 Microsoft 博客文章包含指向许多 EF6 和 MVC 指南的链接。有一个你应该特别检查 -使用实体框架 6 处理并发。该指南使用的是 ASP.Net MVC 项目,但数据库原则应该适用于几乎所有类型的项目。
简而言之,如果您使用ConcurrencyCheck属性,那么您不必自己更新任何计数器 - 但它会增加应用程序数据库操作的开销,因为在幕后 EF 将推断每个 SQL 查询以包括对属性的并发检查您已将该ConcurrencyCheck属性应用于。如果您有一个非常大的表(很多列),这可能会导致应用程序性能变慢。
更好的方法是TimeStamp在代码优先类中使用字节数组属性上的属性(或者如果您使用的IsConcurrencyToken()是在属性上设置的 Fluent API )。然后,如果存在并发冲突,EF 将抛出一个DbUpdateConcurrencyException- 然后由您来捕获它并相应地处理它。
| 归档时间: |
|
| 查看次数: |
6685 次 |
| 最近记录: |