【发布时间】:2010-10-27 01:37:37
【问题描述】:
我正在开发一个允许编辑记录的网络应用程序。有可能两个用户同时在同一个屏幕上工作,如果他们都点击保存,我想尽量减少造成的损害。
如果用户 1 请求该页面,然后更改地址、电话和联系方式,但在他单击保存之前,用户 2 请求相同的页面。
User1 然后点击保存并使用 TryUpdateModel() 更新整个模型,如果 User2 只是将一些细节附加到 Notes 字段,当他保存时,TryUpdateModel() 方法将用旧细节覆盖 User1 保存的新细节.
我考虑过将所有模型属性的原始值存储在隐藏的表单字段中,然后编写自定义 TryUpdateModel 以仅更新已更改的属性,但这感觉有点像我们都拥有的 Viewstate迁移到 MVC 后,我非常乐意离开。
有没有我不知道的处理这个问题的模式?
你会怎么处理?
更新:在回答下面的 cmets 时,我正在使用实体框架。
安东尼
【问题讨论】:
-
这可以在 Repository/DataContext 级别处理。您使用的是什么数据库/数据访问方法?
-
是的..如果您告诉我们您正在使用什么 ORM,我们可以提供帮助..(例如 Linq to SQL/Entities),因为大多数 ORM 都有处理并发问题的方法..这就是您已经解释过了。
标签: asp.net-mvc model-view-controller entity-framework