2011-11-11 42 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。

回答