Я лихорадочно пытался выяснить, как вернуть ROW_NUMBER()
(не количество строк) из NHibernate QueryOver.Теперь это стало равной частью учебного упражнения, поэтому я понимаю, что есть легкие альтернативы, такие как возвращение всего набора и его повторение.Но давайте придерживаться задачи обучения.
Может ли NHibernate вернуть ROW_NUMBER()
запроса?
Вариант использования: я хочу вернуть ранг счетов в группе, отсортированной по дате создания.Ранг - это порядок, в котором он появляется в списке.В идеале я не хочу возвращать весь список в набор записей, просто получаю рейтинг ROW_NUMBER()
одного элемента.Надеюсь, что это имеет смысл.
Кажется, я не могу понять, как вернуть ROW_NUMBER()
, потому что NHibernate требует, чтобы каждое свойство отображалось в класс Invoice, даже если я возвращаю object[]
.
__ hibernate_sort_row - псевдоним ROW_NUMBER (), созданный NHibernate.
var q = session.QueryOver<Invoice>()
.OrderBy(x => x.Created).Asc
.Where(x => x.Active == true)
.Where(x => x.Group == grp)
.SelectList(list => list
.Select(Projections.Property("Id"))
.Select(Projections.Property("Name"))
.Select(Projections.GroupProperty("__hibernate_sort_row")) // <- fails because there is no mapping...
).List<object[]>();