2016-09-08 55 views
0
は、私はこのことについての答えのトンを読ん

が、私の特定の場合に適用する方法を見つけていない「同時に複数の袋を取り出すことができない」のC#、NHibernateは(QueryOverまたはLINQの)リターンのコレクションの積極的なロードコレクションは

I単に

ICollection<Group> Groups性質を持っており、各グループは、「ICollectionをロールproeprtyを持ってUserオブジェクトは、今私は熱心な負荷に多くの中で私がしよう

に埋め埋めグループと、各グループの役割を持つ特定のユーザーを(持っています他)この3つの方法:

1:

_session.Query<User>().FetchMany(u => u.Groups).ThenFetchMany(g => g.Roles) 
    .SingleOrDefault(); 

2:

var utente = _session.QueryOver<User>() 
.Fetch(x => x.Groups).Eager 
.Fetch(x => x.Groups.First().Roles).Eager 
.Where(x => x.IdUtente == idUtente) 
.SingleOrDefault(); 

3:

var query = _session.QueryOver<Utente>() 
    .Where(u => u.IdUtente == idUtente) 
    .Future(); 

Gruppo gruppi = null; 
Ruolo ruolo = null; 
_session.QueryOver<Utente>() 
    .Left.JoinAlias(u => u.Gruppi,() => gruppi) 
    .Left.JoinAlias(() => gruppi.Ruoli,() => ruolo) 
    .Future(); 

return query.ToList().First(); 

しかし、私が取得するたび:cannot simultaneously fetch multiple bags

答えて

0

私はそれがで収集proeprtyに.AsSetを設定し解決しましたnhibernateのマップ

関連する問題