Возврат ROW_NUMBER () из Nhibernate QueryOver - PullRequest
0 голосов
/ 30 мая 2018

Я лихорадочно пытался выяснить, как вернуть 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[]>();
...