问题描述
我们正在使用集群范围的事务,并且在更新文档时收到主题行中提到的错误。要更新文档,首先,我们从数据库加载它,修改一些字段,然后使用提供的 ChangeVector
和 Id
保存它。我的理解是提供 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
?