NHibernate QueryOver: получить количество строк с помощью group by в подзапросе

Я пытаюсь получить счет из запроса с группой by и просто не могу понять, как преобразовать SQL, который я хочу, в синтаксис QueryOver NHibernate.

Это SQL:

select count(*) from
       (select Email from Entry
       where (conditions...)
       group by Email) as tmp

Кажется простым правильно?

Вот как я пытаюсь это сделать, но вызов RowCount (), кажется, полностью оптимизирует группу:

    var query = _unitOfWork.CurrentSession.QueryOver()
        .Select(Projections.Property(x => x.Email),
                Projections.Group(x => x.Email));

    return query.RowCount();

Я бы не возражал использовать для этого критерии, но я очень рад новый (для меня) API QueryOver, который позволяет мне уйти от волшебных строк.

Обновление:

Я не могу использовать сгенерированный SQL, который выполняет отдельный запрос в пределах счетчика (например, выберите счетчик (отдельный адрес электронной почты)) поскольку это приложение работает на SQL CE.

См .: http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/80a1d7dd-22be-4583-b8f2-fcd8cde5ec53/ и http: / /our.umbraco. org / wiki / install-and-setup / sql-server-ce-4-known-issues («Различное количество не поддерживается», примерно на 2/3 пути вниз по странице)

12
задан mmacaulay 25 April 2011 в 13:14
поделиться