尝试将不同的对象与id关联(将对象保存到ravendb时)

时间:2014-11-27 18:35:51

标签: c# .net ravendb

我有以下代码,我创建新对象并尝试保存到raven数据库。 ...

{
     foreach (var url in urls)
     {
        MyUrl u = new MyUrl {
        Id = url.Id,
        Url = url.Url
     };
     urlsCollection.Add(u);
     retrievedUrl = new RetrievedUrl {
        Id = url.Id,
        Url = url.Url
    };
    RavenSession.Store(retrievedUrl); //exception is thrown
    RavenSession.SaveChanges();
}

我正在

  

Raven.Client.Exceptions.NonUniqueObjectException

on RavenSession.Store(retrievedUrl);

带有以下异常消息

An exception of type 'Raven.Client.Exceptions.NonUniqueObjectException' 
occurred in Raven.Client.Lightweight.dll but was not handled in user code

 Additional information: Attempted to associate a different object 
 with id 'RetrievedUrl/361'.

2 个答案:

答案 0 :(得分:2)

您似乎正在尝试使用相同的ID保存(至少)两个不同的对象,这是不可能的。 RavenDB在存储新文档时会自动创建唯一ID,但是,如果您明确定义了文档ID,则会使用它。 saving new document in raven中的更多信息。

答案 1 :(得分:0)

这意味着您在会话中已经有一个具有相同ID的不同对象。对我来说,解决方法是使用新会话。或者,您可以按照Update Document with external object

复制值