nHibernate считает количество строк в подзапросе - PullRequest
1 голос
/ 08 ноября 2011

Как я могу сделать что-то подобное в nHibernate:

select count(*)
from (subquery)

Это довольно простой запрос в SQL, но решение не так очевидно в nHibernate.Очевидным решением было бы что-то вроде:

    var rowcount = Session.QueryOver<Entity>()
       .Select(Projections.Alias(Projections.Count(Projections.SubQuery(detachedQuery)), "count"))
        .FutureValue<int>();

Однако это приводит к ArgumentOutOfRangeException:

Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

Этот SO ответ не даетя не работаю, потому что у меня более сложная группировка.Мой вопрос возник из более раннего вопроса , где я пытался использовать ToRowCountQuery, но эта функция разбивает группы на группы в запросе.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2011

Я нашел старый пост Айенде, который дал мне решение ( Подсчет постраничных данных ).

Я создал свой собственный диалект, как описано в этом посте, и добавил функцию rowcount в свой постраничный запрос. И до того, я получил мой счетчик строк в одном запросе к базе данных.

0 голосов
/ 08 ноября 2011

Если у вас есть session, вы можете

var criteria = session.CreateCriteria(....)

int count = (int) criteria.UniqueResult();
...