Попытка реализовать следующие запросы в 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.