RavenDb 脚本补丁一致性
RavenDb script patching consistency
我有一个相当复杂的文档修改逻辑。在此逻辑执行期间,此文档被其他调用者修改时会出现问题。因此,当我调用 DocumentSession.SaveChanges 时,我可以放弃其他调用者所做的一些更改。作为解决它的方法,我实现了一个修补脚本。我的问题是 RavenDb 是否保证在执行修补脚本时文档不会被其他调用者修改。那么RavenDb内部有没有类似文档修改队列之类的东西呢?
艾莎,
您可以通过在会话上设置 UseOptimisticConcurrency=true;
来解决这个问题而不打补丁,这将导致抛出 ConcurrencyException
。
通过打补丁,我们将确保补丁始终 运行 在文档的一致视图中,并且只有在没有修改的情况下才会应用。如果中途有 处修改,补丁将在新版本上重新应用。
我有一个相当复杂的文档修改逻辑。在此逻辑执行期间,此文档被其他调用者修改时会出现问题。因此,当我调用 DocumentSession.SaveChanges 时,我可以放弃其他调用者所做的一些更改。作为解决它的方法,我实现了一个修补脚本。我的问题是 RavenDb 是否保证在执行修补脚本时文档不会被其他调用者修改。那么RavenDb内部有没有类似文档修改队列之类的东西呢?
艾莎,
您可以通过在会话上设置 UseOptimisticConcurrency=true;
来解决这个问题而不打补丁,这将导致抛出 ConcurrencyException
。
通过打补丁,我们将确保补丁始终 运行 在文档的一致视图中,并且只有在没有修改的情况下才会应用。如果中途有 处修改,补丁将在新版本上重新应用。