System.NotSupportedException:“使用集群事务时不支持 'Taxes/353-A' 的乐观并发。”在 RavenDB 中

System.NotSupportedException: 'Optimistic concurrency for 'Taxes/353-A' is not supported when using a cluster transaction.' in RavenDB

我们正在使用集群范围的事务,我们在更新文档时收到主题行中提到的错误。要更新文档,首先,我们从数据库加载它,修改一些字段,然后使用提供的 ChangeVectorId 将其保存。我的理解是,提供 ChangeVector 只为该会话启用乐观并发,这是我们的意图。 这是代码片段:

var taxToUpdate = await session.LoadAsync<Tax>(myTax.Id, cancellationToken);
taxToUpdate.Description = "Updated description";
await session.StoreAsync(taxToUpdate , myTax.ChangeVector, myTax.Id, cancellationToken);
await session.SaveChangesAsync(cancellationToken);

堆栈跟踪显示为:

Raven.Client.Documents.Session.InMemoryDocumentSessionOperations.ValidateClusterTransaction(SaveChangesData result) in C:\Builds\RavenDB-Stable-5.1010\src\Raven.Client\Documents\Session\InMemoryDocumentSessionOperations.cs:line 883 at Raven.Client.Documents.Session.Operations.BatchOperation.CreateRequest() in C:\Builds\RavenDB-Stable-5.1010\src\Raven.Client\Documents\Session\Operations\BatchOperation.cs:line 41 at Raven.Client.Documents.Session.AsyncDocumentSession.d__31.MoveNext() in C:\Builds\RavenDB-Stable-5.1010\src\Raven.Client\Documents\Session\AsyncDocumentSession.cs:line 157 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult()

这个问题的解决方案是什么,因为在我们的应用程序上下文中必须使用 ChangeVector

不支持文档级别的乐观并发。 它是使用比较交换功能处理的。

https://ravendb.net/docs/article-page/5.1/Csharp/server/clustering/cluster-transactions#case-1-multiple-concurrent-cluster-transactions