.net - OperationVetoedException - 更新现有(唯一)文档时

标签 .net ravendb unique-constraint

当我尝试更新我的 RavenDB 数据库中的文档时,我收到了 OperationVetoedException。

我的 RavenDB 和 UniqueConstraintsBundle 版本是 960(而且一直是,从未从任何以前的版本更新)。

我已经检查过,但在数据库中找不到任何重复项。所以我不明白为什么会出现这个错误。

下面我的代码示例中的列表 oldVisitorSessions 仅包含唯一对象。

代码

using (var session = _documentStore.OpenSession())
{
    foreach (var visitorSession in oldVisitorSessions)
    {
        visitorSession.ProspectType = string.Empty;
        session.Store(visitorSession);
    }

    session.SaveChanges();
}

异常

Url: "/bulk_docs"
Raven.Database.Exceptions.OperationVetoedException: PUT vetoed by Raven.Bundles.UniqueConstraints.UniqueConstraintsPutTrigger because: Ensure unique constraint violated for fields: session_id
   at Raven.Database.DocumentDatabase.AssertPutOperationNotVetoed(String key, RavenJObject metadata, RavenJObject document, TransactionInformation transactionInformation) in c:\Builds\RavenDB-Stable\Raven.Database\DocumentDatabase.cs:line 522
   at Raven.Database.DocumentDatabase.<>c__DisplayClass37.<Put>b__30(IStorageActionsAccessor actions) in c:\Builds\RavenDB-Stable\Raven.Database\DocumentDatabase.cs:line 476
   at Raven.Storage.Esent.TransactionalStorage.Batch(Action`1 action) in c:\Builds\RavenDB-Stable\Raven.Storage.Esent\TransactionalStorage.cs:line 330
   at Raven.Database.DocumentDatabase.Put(String key, Nullable`1 etag, RavenJObject document, RavenJObject metadata, TransactionInformation transactionInformation) in c:\Builds\RavenDB-Stable\Raven.Database\DocumentDatabase.cs:line 468
   at Raven.Database.Extensions.CommandExtensions.Execute(ICommandData self, DocumentDatabase database) in c:\Builds\RavenDB-Stable\Raven.Database\Extensions\CommandExtensions.cs:line 25
   at Raven.Database.DocumentDatabase.<>c__DisplayClassca.<Batch>b__c6(IStorageActionsAccessor actions) in c:\Builds\RavenDB-Stable\Raven.Database\DocumentDatabase.cs:line 1196
   at Raven.Storage.Esent.TransactionalStorage.ExecuteBatch(Action`1 action) in c:\Builds\RavenDB-Stable\Raven.Storage.Esent\TransactionalStorage.cs:line 376
   at Raven.Storage.Esent.TransactionalStorage.Batch(Action`1 action) in c:\Builds\RavenDB-Stable\Raven.Storage.Esent\TransactionalStorage.cs:line 337
   at Raven.Database.DocumentDatabase.Batch(IEnumerable`1 commands) in c:\Builds\RavenDB-Stable\Raven.Database\DocumentDatabase.cs:line 1192
   at Raven.Database.Server.Responders.DocumentBatch.Batch(IHttpContext context) in c:\Builds\RavenDB-Stable\Raven.Database\Server\Responders\DocumentBatch.cs:line 94
   at Raven.Database.Server.Responders.DocumentBatch.Respond(IHttpContext context) in c:\Builds\RavenDB-Stable\Raven.Database\Server\Responders\DocumentBatch.cs:line 38
   at Raven.Database.Server.HttpServer.DispatchRequest(IHttpContext ctx) in c:\Builds\RavenDB-Stable\Raven.Database\Server\HttpServer.cs:line 550
   at Raven.Database.Server.HttpServer.HandleActualRequest(IHttpContext ctx) in c:\Builds\RavenDB-Stable\Raven.Database\Server\HttpServer.cs:line 316

最佳答案

请注意,您在“session_id”上有一个唯一约束失败,很可能您将它设置为 null,对吗? 还有一个东西也是空的。

关于.net - OperationVetoedException - 更新现有(唯一)文档时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13495051/

相关文章:

java - 将分号文本转换为Excel

c# - 帐户和安全窗口服务之间没有映射

sql-server - 从 SQL 复制到 RavenDB

sql - 在两个 varchar 字段上创建唯一的不区分大小写的约束

Spring Data Neo4j -repository.save 和 @Indexed(unique=true)

c# - 设置何时在 WPF ScrollViewer 中滚动

c# - GUI 线程中的异常导致 vshost.exe 崩溃

c# - 如何在 RavenDB 中选择一个类型的所有文档

c# - 伪造/模拟接口(interface)会出现 "no default constructor"错误,这怎么可能?

sql - 使用唯一约束更新数据库记录