Я использую NHibernate с QueryOver API для запроса сущностей моего домена.Проблема в получении дублирующих результатов.Например, при запросе следующего домена:
Я использую такой код:
var list = Session.QueryOver<Post>()
.JoinQueryOver<Comment>(x => x.Comments)
.Where(c => c.Name == "Name")
.Take(5)
.List();
Сгенерированный SQL будет выглядеть следующим образом:
SELECT Top(5) * FROM Posts p left outer join Comments c on p.Id = c.PostId
Проблема здесьчто после левого соединения результирующий набор записей имеет более 5 строк.И тогда функция TOP
применяется и обрезает результаты.Так, например, если в первом сообщении есть 5 комментариев, я получу это сообщение 5 раз, а другие не получу.
Я знаю, почему это происходит, и нашел хороший пост об этом.Но есть ли проекция, которая скажет nhibernate выбирать только столбцы из сущности Post
, а не добавлять столбцы из сущности Comment
в select?Может быть, следует использовать какой-то другой метод (не JoinQueryOver)?