c#中,使用Nhibernate (QueryOver或Linq)返回"不能同时获取多个包"

本文关键字:quot 不能 获取 返回 Nhibernate 使用 QueryOver Linq | 更新日期: 2023-09-27 18:06:17

我读了很多关于这个问题的答案,但没有找到一种方法适用于我的具体情况

我有一个User对象,它有ICollection<Group> Groups属性,每个组有一个"ICollection Roles"属性

现在我必须急于加载一个特定的用户与组填充和每个组的角色填充到

我尝试了以下三种方法:

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

c#中,使用Nhibernate (QueryOver或Linq)返回"不能同时获取多个包"

我解决了在非hibernate映射中设置.AsSet集合属性

相关文章: