System.NotSupportedException: 'Taxes/353-A' 的乐观并发在使用集群事务时不受支持在 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 造成 C:\Builds\RavenDB-Stable-5.1\51010\src\Raven.Client\Documents\Session\InMemoryDocumentSessionOperations.cs:line 第 883 章 Raven.Client.Documents.Session.Operations.BatchOperation.CreateRequest() 在 C:\Builds\RavenDB-Stable-5.1\51010\src\Raven.Client\Documents\Session\Operations\BatchOperation.cs:line 41 在 Raven.Client.Documents.Session.AsyncDocumentSession.d__31.MoveNext() 在 C:\Builds\RavenDB-Stable-5.1\51010\src\Raven.Client\Documents\Session\AsyncDocumentSession.cs:line 157 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...