c# – 长时间运行的Entity Framework事务

当用户打开某个实体的编辑表单时,我想锁定该实体并让她进行任何更改.在编辑过程中,她需要确保没有其他人对其进行任何编辑操作.

如何在实体框架(C#)4,数据库MS SQL Server 2008中锁定实体?

非常感谢你提前!

最佳答案
有两种方法可以处理这些情况:

>乐观并发,允许并发编辑和插入,并在违反并发规则的情况下捕获异常.乐观并发通过保护相同项的插入的唯一约束以及保护对同一项的并发更新的时间戳/行版本列来实施.如果当前用户进行更改时其他人更新了行,则应用程序将在保存期间抛出OptimisticConcurrencyException,您必须允许用户覆盖其他更改或重新加载新存储的数据.
>悲观并发,其中记录在任何客户端执行的操作期间被锁定,阻止其他客户端更新同一记录.悲观并发通常由添加到表中的自定义列强制执行,如LockedBy,LockedAt等.一旦填充了这些列,其他任何人都无法选择要编辑的记录. LockedAt可以帮助您实现已发布锁的自动过期.长时间运行的“EF事务”不会长时间运行数据库事务.

您的初始描述会导致第二种情况在某些应用程序中有意义.

转载注明原文:c# – 长时间运行的Entity Framework事务 - 代码日志