实体框架中的乐观并发控制详解
1. 乐观并发异常简介
在数据操作过程中,当客户端出现错误时,可能会引发乐观并发异常(OptimisticConcurrencyException)。例如,当用户尝试删除联系人时,同样类型的并发检查也会发生。系统会将 RowVersion 添加到命令的 WHERE 子句中,实体中所有标记为 ConcurrencyMode=Fixed 的属性都会以这种方式合并到 Update 和 Delete 命令的 WHERE 子句中。
2. 无 rowversion 字段的并发检查
虽然 rowversion 并发检查是开发者最常用的方法,但有时可能没有该数据类型可用。此时,有以下两种替代方法:
- 使用 ModifiedDate 属性 :可以使用 ModifiedDate 日期时间属性代替 rowversion 字段,并将其 ConcurrencyMode 标记为 Fixed 。但需要确保每次更新时该字段都会被更新。不过,仅通过特定模型的 ObjectContext 更新 ModifiedDate 字段并不能保证全面覆盖,任何直接访问数据库的应用程序、进程甚至用户都需要
超级会员免费看
订阅专栏 解锁全文


被折叠的 条评论
为什么被折叠?



