2011-11-11 74 views
3

我有東西,看起來像下面的文檔結構:修改特定項目中嵌套集合中RavenDB

public class Document { 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public List<Property> Properties { get; set; } 
} 

public class Property { 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

現在,查詢和修改文檔很容易。但我需要在我的應用程序中訪問特定的Property-Instance,而且似乎他們不會像根文檔那樣自動獲取ID。看來這是RavenDB的設計。

我可能是我卡在關係世界,但我想要做的基本上是檢索正確的文件,然後得到正確的屬性,修改並重新保存文檔。

from property in document.Properties 
where property.Id == someId 
select property 

...這顯然會無法正常工作,只要

  • RavenDB不會自動設置ID字段
  • 我不作任何ID生成機理自己

我是否完全錯誤地行事,或者做我想要做的事情嗎?我應該將屬性移出爲根節點並在Document中對它們進行某種引用?

  1. 檢索文檔與性能
  2. 獲取屬性[最後]的ID
  3. 加1,然後插入新的ID自己在新的屬性列表:或者我應該只是插入屬性時,做這樣的事情

這會,但是,需要至少兩個請求(一個讓現有的屬性,一個保存更改),到數據庫中,這似乎只是骯髒和unnecessarsy對於這樣一個看似簡單的任務。

我發現了很多類似的帖子,但都沒有真正回答這個AFAIK。

回答