2012-09-11 4 views
0

NHibernate QueryOver에서 다음 쿼리를 구현하려고합니다.동적으로 NHibernate 쿼리에 투영을 추가하십시오.

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를 구성 코드가 있습니다. 그때, 메소드 매개 변수에 따라서 같은 baseQuery에하여 그룹을 추가 할 것이다 (이것은 그러나 초기 예측 (.SelectList을 "overwritting"본질적으로 내 baseQuery에 대한 계획과를 재설정 끝

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

의 => s.SelectSum (c => c.GrossChargeAmount))). 이 단계에서 쿼리를 실행해도 GROUP BY만으로 SUM()이 수행되지 않습니다.

TLDR; Nhibernate QueryOver 인스턴스에 어떻게 투영을 추가합니까?

마지막으로,하지만이 아닌 이상 내가 NHibernate에 실행하고있어 2.0.50727은

+0

을 선호하는 경우

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

당신은 또한 selectList의에 전달 된 표현을 만들 수는 전혀 없습니다 그런 일을 NHibernate 2.0.50727 –

답변

0

시도 : 당신이

+0

결국, 나는 IList 을 maintaing하는 것을 끝내고 baseQuery.Select()에 전달했다. 감사! – Alex

관련 문제