Динамически добавлять прогнозы в запрос NHibernate

Попытка реализовать следующие запросы в NHibernate QueryOver.

SQL

SELECT
     SUM(GrossChargeAmount)
FROM Charges
INNER JOIN Account on Account.Chargekey = Charges.Chargekey

SELECT
     SUM(GrossChargeAmount),
     Account.AccountHolder
FROM Charges
INNER JOIN Account on Account.Chargekey = Charges.Chargekey
GROUP BY
     Account.AccountHolder

NHibernate:

var accountAlias = null;

var baseQuery = session.QueryOver<Charges>()
                .JoinAlias(c => c.Account, () => accountAlias)
                .SelectList(s => s.SelectSum(c => c.GrossChargeAmount))

У меня есть код, который создает baseQuery. Затем я, в зависимости от параметров метода, захочу добавить GROUP BY к базовому запросу, например:

baseQuery.SelectList(s => s.GroupBy(() => accountAlias.AccountHolder)

Однако это приводит к сбросу прогнозов в моем baseQuery и, по существу, «перезаписыванию» исходных прогнозов ( .SelectList(s => s.SelectSum(c => c.GrossChargeAmount)) ). На этом этапе выполнение запроса не будет иметь SUM(), а только GROUP BY.

TLDR. Как добавить проекции в экземпляр Nhibernate QueryOver?

И последнее, но не менее важное: я использую NHibernate 2.0.50727.


person Alex    schedule 11.09.2012    source источник
comment
Нет такой вещи, как NHibernate 2.0.50727   -  person Diego Mijelshon    schedule 12.09.2012


Ответы (1)


пытаться:

baseQuery.SelectList(s => 
    s.SelectSum(c => c.GrossChargeAmount)
    .GroupBy(() => accountAlias.AccountHolder))

вы также можете создать выражение, переданное в SelectList, если хотите

person Martin Ernst    schedule 11.09.2012
comment
В конце концов я закончил поддерживать IList‹IProjection›, который я передал в baseQuery.Select(). Спасибо! - person Alex; 19.09.2012