gpt4 book ai didi

c# - Entity Framework 6 代码优先并发

转载 作者:行者123 更新时间:2023-11-30 15:29:37 27 4
gpt4 key购买 nike

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

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

根据我的阅读,我可以通过向更新计数器属性添加 ConcurrencyCheck 属性来进行检查,但是如何在成功更新时执行递增?

或者我应该只使用 Rowversion 列吗?

最佳答案

This Microsoft blog post包含许多 EF6 和 MVC 指南的链接。有一个你应该特别检查 - Handling Concurrency with the Entity Framework 6 .本指南使用 ASP.Net MVC 项目,但数据库原则应适用于几乎任何类型的项目。

不过,简而言之,如果您使用 ConcurrencyCheck 属性,那么您不必自己更新任何计数器 - 但它会增加应用程序的数据库操作的开销,因为在引擎盖下 EF 将是外推每个 SQL 查询以包括对已应用 ConcurrencyCheck 属性的属性的并发检查。如果您有一个非常大的表(很多列),这可能会导致应用程序性能下降。

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

关于c# - Entity Framework 6 代码优先并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23421705/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com