我有一个非常复杂的文档修改逻辑。在此逻辑执行期间,当其他调用者修改此文档时,问题就会出现。因此,当我调用DocumentSession.SaveChanges时,我可以放弃其他调用者所做的一些更改。作为解决它的方法,我实现了一个修补脚本。我的问题是RavenDb是否保证在执行补丁脚本时,其他调用者不会修改该文档。那么内部的RavenDb中是否存在类似文档修改队列的内容?
答案 0 :(得分:1)
IDSA,
您可以通过在会话中设置UseOptimisticConcurrency=true;
来解决此问题而不进行修补,这会导致ConcurrencyException
被抛出。
使用Patching,我们将确保补丁始终在文档的一致视图上运行,并且只有在没有修改的情况下才会应用它。如果中途有 修改,则补丁将重新应用于新版本。