任何人都可以告诉我解决以下问题的方法,这是一个非常典型的用例。
用户1正在编辑正在修改用户角色等的第1页。 用户2也在修改与用户1相同的用户。 我如何防止这些变化互相覆盖?
这是针对带有框架3.5的asp.net网站
感谢 尼尔
答案 0 :(得分:4)
乐观并发在这里很常见,通常使用ROWVERSION
(SQL服务器中的TIMESTAMP
)数据类型。大多数ORM会自动处理此问题(检测到ROWVERSION
/ TIMESTAMP
的存在) - 否则您需要在代码中处理此问题。
最简单的水平;在保存记录以进行编辑时,保持抓取的ROWVERSION
,并在尝试保存时进行检查。如果匹配,则提交保存;否则你抛出异常(第二次编辑失败)。
请注意,可以(作为替代方案)在更新期间检查每一列;这更精细,但成本更高(并且它不能完全应对具有相互依赖属性的某些场景)。