如何限制一个用户更新记录,而另一个用户使用MVC,EF?

时间:2016-10-13 11:48:53

标签: mysql asp.net-mvc-5 entity-framework-6

我使用MVC5& EF6。我想限制一个用户在其他用户使用时修改特定记录。我正在尝试各种方式,如EF中的并发性,但仍然在寻找更好的方法。我想为用户'锁定'表记录。因此一个用户无法更改另一个用户记录。有人试过吗?

1 个答案:

答案 0 :(得分:0)

EF实现了乐观并发模型。换句话说,它假定不存在冲突,然后返回异常(如果存在)。这通常适用于程序化更新,但用户体验部门却相当缺乏。

例如,假设两个用户同时编辑同一个对象。用户1首先保存,然后是用户2.当然,用户1赢了,他们继续他们的一天,但现在用户2处于困境。正是在他们身上,现在要解决这场冲突。他们可以丢弃他们的工作,并根据用户1的更新重新开始,或者覆盖用户1的工作,放弃该用户的更改。如果用户1的工作被覆盖,则不会发出已发生的通知。

在这种情况下,悲观并发性要好得多。用户1编辑时,记录被“锁定”。用户2必须等待用户1完成。只有这样他们才能编辑记录。因此,永远不会有需要解决的冲突,也不会丢失一个用户工作的风险。

实现这种类型的并发非常简单。您只需要一些地方来记录特定用户在特定时间编辑特定对象。这可能是记录本身或某种访问日志。无论您将信息放在何处,都可以在用户想要编辑记录时检索它。如果当前没有用户编辑或锁已过期,则打开记录并记录当前用户和时间。如果存在现有用户并且锁仍处于活动状态,则您拒绝访问或仅将记录设置为只读,因此用户可以查看但不能编辑。