System.NotSupportedException:“使用集群事务时不支持 'Taxes/353-A' 的乐观并发。”在 RavenDB 中
System.NotSupportedException: 'Optimistic concurrency for 'Taxes/353-A' is not supported when using a cluster transaction.' in RavenDB
我们正在使用集群范围的事务,我们在更新文档时收到主题行中提到的错误。要更新文档,首先,我们从数据库加载它,修改一些字段,然后使用提供的 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
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
?
我们正在使用集群范围的事务,我们在更新文档时收到主题行中提到的错误。要更新文档,首先,我们从数据库加载它,修改一些字段,然后使用提供的 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 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
?