使用TransformResults从RavenDB中选择分层数据?

使用TransformResults从RavenDB中选择分层数据?,ravendb,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 De

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

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; }
}
public class Result
    {
        public int Id { get; set; }
        public string Description { get; set; }
    }

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

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

好的,那么在这种情况下我应该怎么做?我应该把它分开,把顶部、中部和底部作为单独的文档处理吗?为什么我的方法“奇怪”?是不是关系太密切了?我只是想知道我做错了什么,什么是正确的方法。谢谢你的帮助!我想我可能把问题弄糊涂了。在看了实况转播后,我得到了我想要的。如果我像
var top=session.Query.First(t=>t.Id.Equals(1)).Middles.Select(m=>new{m.Id,m.Description}).ToList()
那样指定我的quey,那么我会得到给定top.Id的所有中间值,这正是我想要的。以同样的方式,我可以一直向下导航。这很有效,但这是一种方法吗?