更新传奇之外的传奇上的属性

时间:2013-12-03 20:57:47

标签: ravendb nservicebus

我需要对传奇之外的传奇文档进行编辑。我正在尝试进行简单的属性更新:

                SaleSaga saga = session.Load<SaleSaga>(id);
                saga.SaleSagaTaskId = taskId;
                session.SaveChanges();

这不起作用,我最终解决了这个问题。

    {"Entity Messages.SaleSaga had document key 'salesaga/d6b639c4-78a1-4be6-8e44-a283010b11a9' 
but now has document key property 'salesagas/d6b639c4-78a1-4be6-8e44-a283010b11a9'
.\r\nYou cannot change the document key property of a entity loaded into the session"}

我不确定为什么它会在“salesagas”的末尾加上's'。我对解决这个问题的最佳方法感到茫然,我们将非常感谢任何帮助。

编辑:这是针对NServiceBus传奇的,并且在尝试将编辑后的文档保存回RavenDB时发生错误。

2 个答案:

答案 0 :(得分:3)

NServiceBus Saga Persister使用不同的约定来存储传奇,而不是Raven默认约定。 Raven默认约定是获取类名并将其复数。显然NServiceBus没有这样做。因此,您可以通过以完全不同的方式访问数据来实现不匹配。

您可能希望重用NServiceBus Saga Persister类。 Saga持久性代码可以在这里找到:

https://github.com/Particular/NServiceBus/tree/4.2.0/src/NServiceBus.Core/Persistence/Raven

答案 1 :(得分:0)

原始对象是如何写的?在我看来,这个数据的读者和作者可能是两个不同的系统,或者这个系统的两个不同版本,并且文档约定已经改变。

使用原始约定,或使用字符串标识符而不是Guid。