2017-03-17 46 views
1

锁定任何人都知道任何捆绑,或教义任何计划实施一项新的乐观锁定的策略像在Telerik的框架?学说2乐观只改变领域

http://docs.telerik.com/data-access/developers-guide/crud-operations/concurrency-control/data-access-tasks-define-model-concurrency-optimistic#checking_for_any_changes

这种策略是伟大的,因为它不使用版本号,或者时间戳,它比较了用新值输入旧值,并且只对变化的输入。

所以,如果我有两种不同的形式更新相同的实体,使用当前的策略(时间戳或版本),用户将陷入冲突,即使不更新相同的数据。

回答

0

我知道这是对interwebs一个相当古老的问题,所以,我要呆滞如何在理论上可以做到。

每列锁意味着有检测每列更改的机制 - 因此要么散列(或我们关心的列),并且使用散列比较来检测/跟踪更改,或者我们跟踪每列个别。

这种跟踪将不得不对每个请求的基础上加以应用,以确定有什么变化时。这是普通的@Version装饰器逻辑应用的地方。

Telerik能够处理每列更改,因为在浏览器中比较了信息(数组比较,很可能)。这是与更新之前不与其他浏览器/数据库同步的数据的孤立状态。

这里最简单的选择是不允许两个表单碰撞(就数据而言)并删除锁 - 或者 - 从主表中分离表单数据,并允许它们单独更新(并与SQL合并加入)。

+0

感谢您重新开始讨论。 表单发生碰撞并且无法更改。认为2个用户可以访问相同的表单,编辑同一个实体。它发生了很多。 哈希解决方案是一个很好的解决方案。 – Stev