2016-09-08 5 views
0

j'ai lu des tonnes de réponse à ce sujet mais ne trouve pas un moyen d'appliquer à mon cas particulierC#, la collecte de chargement désireux de collection avec NHibernate (QueryOver ou Linq) retour « ne peut pas aller chercher simultanément plusieurs sacs »

i simplement avoir objet User qui ont ICollection<Group> Groups propriété et chaque groupe ont un « Rôles ICollection de la proeprty

maintenant je dois charge désireux d'un utilisateur spécifique avec des groupes remplis et les rôles de chaque groupe rempli à

i essayer (parmi d'autres autre) cette façon 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(); 

mais chaque fois que je: cannot simultaneously fetch multiple bags

Répondre

0

Je l'ai résolu la mise en .AsSet sur la collecte proeprty dans cartes nhibernate