nhibernate:在解决一对多双向关系时进行单一查询

时间:2015-11-25 10:26:10

标签: c# nhibernate fluent-nhibernate

我尝试使用Nhibernate优化查询: 我有以下场景(省略一些样板):

class Parent
{
    public Guid Id {get;set;}
    public IList<Child> Children {get;set;}
}
class Child
{
    public Parent Parent {get;set;}
    public Guid Id {get;set;}
}

class ParentMap: ClassMap<Parent>
{
    public ParentMap()
    {
        Id(x=>x.Id);
        HasMany(x=>x.Children)
            .Fetch.Join();
    }
}
class ChildMap: ClassMap<Child>
{
    public ChildMap()
    {
        Id(x=>x.Id);
        References(x=>x.Parent);
    }
}

我需要针对以下内容进行单一查询:

var children = session.QueryOver<Child>().Fetch(x=>x.Parent).Eager.List();

var children = session.Query<Child>().Fetch(x=>x.Parent).ToList();

然后可以访问每个子节点的Parent属性,而无需使用nihibernate进行附加查询。

实际上,Nhibernate首先使用包含必要连接的查询查询子项,然后使用另一个查询来检索父项,但所有必要的信息应该已经在第一个查询中。

任何人都可以帮助我吗? 提前致谢

0 个答案:

没有答案