【发布时间】:2014-01-11 09:30:04
【问题描述】:
我有代码通过名为 GroupToUsers 的表调用与用户具有一对多关系的组列表。
我正在尝试列出包含每个组内用户列表的不同组列表。
我是 NHibernate 的新手,所以请耐心等待 :)。
代码:
IQueryOver<Group, Group> query = this.Session.QueryOver<Group>()
.Where(g => g.IsActive && !g.IsDeleted)
.Fetch(g => g.Users).Eager
.JoinAlias(g => g.Users, () => groupToUser, JoinType.LeftOuterJoin)
.Where(g => g.Owner.Id == userId || (groupToUser.Group != null && groupToUser.IsAccepted && groupToUser.Profile.Id == userId))
.OrderBy(g => g.Description).Asc
.TransformUsing(Transformers.DistinctRootEntity);
IQueryOver<Group> countQuery = query.ToRowCountQuery().Cacheable();
IFutureValue<int> totalCount = countQuery.FutureValue<int>();
result.Items = query.Take(size + 1).Skip((page - 1) * size).List();
result.Count = totalCount.Value;
我期待 9 条记录,但它返回的计数为 11(有 11 行 2 组重复两次,因为它们每组有 2 个用户)
所以我的问题是为什么 result.Count 返回 11 而不是 9?
【问题讨论】:
-
如果您是 NHibernate 的新手,使用 queryover 而不是 linq-to-nhibernate 是经过深思熟虑的选择吗?由于 lambda 的使用,许多新手继续使用 QueryOver 认为它是 NHibernate“linq”,但不,它是别的东西。
标签: c# nhibernate fluent-nhibernate