在RavenDB中修改嵌套集合中的特定项

时间:2011-11-11 20:22:36

标签: c# .net 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. 检索文档
  3. 获取属性[last]的ID
  4. 添加1并在新属性中自行插入新ID
  5. 然而,这将需要至少两个请求(一个用于获取现有属性,一个用于保存更改)到数据库,这对于看似简单的任务来说似乎很脏并且不必要。

    我发现了很多类似的帖子,但他们都没有真正回答这个AFAIK。

1 个答案:

答案 0 :(得分:1)