2013-08-27 21 views
0

对于任务ID为XX的给定任务,正在一个MVC 4.0网页上执行事务。如果该交易/记录处于第一用户的编辑模式下,则其他用户无法从任何地方执行相同的交易。允许单个用户执行每个操作的方法MVC 4.0 C#

据我所知,如果某个用户打开编辑页面,另一个用户无法访问给定任务/事务ID(编辑模式下的主键)的同一页面。

我试过乐观并发,但它在保存/编辑点击过程中发出警告,至于我的要求,如果用户已经处于编辑模式,用户不应该打开页面。

我认为写作业过滤器,存储在会话中的任务ID是否是正确的方式来实现呢?

如何一次只允许单个用户执行操作方法?

+0

您需要使用Application对象在整个线程中全局地存储它,但是,如果将它放在webfarm后面或创建Web花园,您仍然会遇到并发问题。我会将记录标记为处于编辑状态,然后允许用户查看编辑页面,并在正在编辑时将其返回到另一个页面。 – Slicksim

回答

0

听起来像你想要悲观并发,不乐观。

您需要将此滚你自己,并确保只允许他们获得一个锁后用户编辑一条记录:

+0

我已将IsLocked,LockedBy和LockedDateTime字段添加到数据库表中,并编写了具有获取这些字段的逻辑的MVC Action filter属性,并检查记录的锁定。谢谢@Ergwun和slicksim的帮助。 –

相关问题