我尝试使用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首先使用包含必要连接的查询查询子项,然后使用另一个查询来检索父项,但所有必要的信息应该已经在第一个查询中。
任何人都可以帮助我吗? 提前致谢