2011-02-03 57 views
4

Nhibernate 3中的linq提供程序使我能够使用FetchMany,ThenFetchMany等为集合指定多个级别的提前提取。是否有使用QueryOver执行此操作的等效方法。NHibernate 3.0 QueryOver相当于Nhibernate中的FetchMany Linq

说我有一个结构

class A 
{ 
    IList<B> b; 
} 

class B 
{ 
    IList<C> c; 
} 

class C 
{ 

} 

我渴望负荷NH LINQ的

session.Query<A> 
     .FetchMany(x=> a.b) 
     .ThenFetchMany(y => y.c) 
     .ToList(); 

整个树是否有这样做使用QueryOver API的方法吗?

回答

2

我已经问过在这里SO完全相同的question,并发布了我找到的答案。

0
B bAlias = null; 
C cAlias = null; 
var list = session.QueryOver<A> 
.JoinAlias(x=>x.b,() => bAlias, JoinType.LeftOuterJoin) 
.JoinAlias(x=>bAlias.c,() => cAlias, JoinType.LeftOuterJoin) 
.List();