通过命令删除/更新 RavenDB 文档而不更改向量

问题描述 投票:0回答:0

我有一个我想在 RavenDB 中删除/更新的实体,但它没有与任何会话相关联。 AFAIK 有两种方法可以做到这一点。我以删除为例,但我认为它应该与 put 相同。

负载方式:

var trackedEntity = await this.asyncSession.LoadAsync<MyEntity>(untrackedEntity.Id, cancellationToken);
session.Delete(trackedEntity);

指挥方式:

var command = new DeleteDocumentCommand(untrackedEntity.Id, null);
await session.Advanced.RequestExecutor.ExecuteAsync(command, session.Advanced.Context);

有了负载,您需要额外访问 RavenDB 以获取实体并通过会话跟踪它。 使用命令你不需要额外的行程,但你没有并发控制的变化向量。

我会说加载的方式更安全,更慢,命令的方式更快,但你可能会遇到并发问题。

最后的假设是否正确?
命令遇到并发问题的可能性有多大?
能否概括说明哪种方式更可取?

ravendb
© www.soinside.com 2019 - 2024. All rights reserved.