允许数据库更改

时间:2010-11-20 02:15:06

标签: c# asp.net

任何人都可以告诉我解决以下问题的方法,这是一个非常典型的用例。

用户1正在编辑正在修改用户角色等的第1页。 用户2也在修改与用户1相同的用户。 我如何防止这些变化互相覆盖?

这是针对带有框架3.5的asp.net网站

感谢 尼尔

1 个答案:

答案 0 :(得分:4)

乐观并发在这里很常见,通常使用ROWVERSION(SQL服务器中的TIMESTAMP)数据类型。大多数ORM会自动处理此问题(检测到ROWVERSION / TIMESTAMP的存在) - 否则您需要在代码中处理此问题。

最简单的水平;在保存记录以进行编辑时,保持抓取的ROWVERSION,并在尝试保存时进行检查。如果匹配,则提交保存;否则你抛出异常(第二次编辑失败)。

请注意,可以(作为替代方案)在更新期间检查每一列;这更精细,但成本更高(并且它不能完全应对具有相互依赖属性的某些场景)。