У меня есть код, вызывающий список групп, которые имеют отношение друг к другу с пользователями через таблицу с именем GroupToUsers.Fluent NHibernate не возвращает отдельные значения
Я пытаюсь перечислить список групп, содержащий список пользователей в каждой группе.
Я новичок в 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 пользователей каждый)
Так что мой вопрос в том, почему это результат.Count возвращает 11 count вместо 9?
Если вы новичок в NHibernate, был использован [tag: queryover], а не [tag: linq-to-nhibernate] преднамеренный выбор? Многие новички идут с QueryOver, полагая, что это «linq» NHibernate из-за использования лямбда, но нет, это что-то еще. –