c#,使用 Nhibernate(QueryOver 或 Linq)预先加载集合 return "cannot simultaneously fetch multiple bags"
c#, eager loading collection of collection with Nhibernate (QueryOver or Linq) return "cannot simultaneously fetch multiple bags"
我读了很多关于这个的答案,但没有找到适用于我的具体案例的方法
我只是有 User
个对象,其中有 ICollection<Group> Groups
属性 并且每个组都有一个“ICollection 角色”proeprty
现在我必须急切地加载一个特定的用户,其中包含填充的组和每个组的角色填充到
我尝试(除其他外)这 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
我在 nhibernate 映射的集合属性上设置 .AsSet
解决了这个问题
我读了很多关于这个的答案,但没有找到适用于我的具体案例的方法
我只是有 User
个对象,其中有 ICollection<Group> Groups
属性 并且每个组都有一个“ICollection 角色”proeprty
现在我必须急切地加载一个特定的用户,其中包含填充的组和每个组的角色填充到
我尝试(除其他外)这 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
我在 nhibernate 映射的集合属性上设置 .AsSet
解决了这个问题