2011-02-03 14 views
4

Nhibernate 3のlinqプロバイダは、FetchMany、ThenFetchManyなどを使用してコレクションの複数レベルのeager fetchingを指定できます。これにはQueryOverを使用する同等の方法があります。NHibernate 3.0 Nhibernate LinqのFetchManyに相当するQueryOver

は私が

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

NHのLINQでツリー全体熱心な負荷私は構造に

class A 
{ 
    IList<B> b; 
} 

class B 
{ 
    IList<C> c; 
} 

class C 
{ 

} 

を持つことができると言うQueryOver APIを使用してこれを行う方法はありますか?

答えて

2

私は実際には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();