使用TransformResults从RavenDB中选择Hierarical数据?

时间:2012-08-03 16:21:03

标签: ravendb

我有一个简单的类层次结构,如下所示:

public class Top
{
    public string Id { get; set; }
    public string Description { get; set; }
    public List<Middle> Middles { get; set; } 
}

public class Middle
{
    public string Id { get; set; }
    public string Description { get; set; }
    public List<Bottom> Bottoms { get; set; } 
}

public class Bottom
{
    public string Id { get; set; }
    public string Description { get; set; }
}

整个事物被保存为“Top”类型的实体。文档旨在保留和反映关系/层次结构但只有一半,但我会在某个时候关注给定关系的“Id”和“描述”。所以,我想要运行的查询类型是

  • 选择所有Top,
  • 选择所有中间,
  • 选择Top,其中Top.Id = somevalue
  • 选择Bottom,其中Top.Id = somevalue,Middle.Id = somevalue

我希望将结果转化并像这样返回给我:

public class Result
    {
        public int Id { get; set; }
        public string Description { get; set; }
    }

如何实现TransformResults(我认为这是可以使用的功能)来实现这一目标?我已经阅读了很多例子,但突然之间我看到了参数/值,这些参数/值没有在任何地方声明,因此我不明白发生了什么。

1 个答案:

答案 0 :(得分:1)

TransformResults无法访问外部世界,您无法根据运行的查询执行逻辑。 当然,您可以展平此结构,但除非您使用不同的TransformResults创建多个索引,否则您无法执行此操作。 请注意,这首先是一件奇怪的事情,因为它与作为事务边界的文档的标准建模不匹配。