如何在MVC项目中通过EF更新Oracle View时管理并发?

时间:2013-06-11 05:09:11

标签: asp.net-mvc-4 view concurrency oracle10g

我的MVC 4应用程序使用Entity Framework 5作为其ORM。 并且Oracle 10数据库用作其后端。 MVC视图正在显示来自Oracle DB Views的数据,而我无法控制数据库架构。 视图是可更新的,并且还需要管理并发性。基础表/视图中没有时间戳类型的列。 在这种情况下,我如何管理并发?

对此的任何建议都将非常感激。

1 个答案:

答案 0 :(得分:2)

对于迟到的回答感到抱歉,但我刚刚遇到了这个问题。 由于您无法访问数据库,因此阻止2个用户请求在同一记录上进行编辑并不容易(即使您这样做了,我也不确定在Web应用程序中是否有防弹方法)。您可以做的是阻止用户编辑在检索时间和更改提交时间之间修改的对象。我将假设您在MVC应用程序中使用视图模型来表示屏幕上的域模型对象。您可以在视图模型中包含一个附加字段,用于根据检索时对象状态计算的哈希值。发布编辑时,您需要再次从数据库中检索记录,将其当前哈希值与MVC视图提交的哈希值进行比较。如果出现差异,请通知用户更改并显示现在数据库中的值,通知用户发生的情况(例如,通过添加模型状态错误)。