2012-12-04 83 views
-1

我將不勝感激寫NHibernate的QueryOver等值以下提到的SQL一些幫助:NHibernate的QueryOver相當於

select sum(s.StudentCount),sum(w.TotalEarningsAmount), 
avg(w.TotalEarningsAmount),count(w.TotalEarningsAmount) 
from School s inner join s.Earnings w where s.Active = 1" 
+0

Owww預測,討厭。我不得不坐下來弄清楚這一點。 – Phill

+4

你試過了什麼? –

回答

3
Earning w = null; //alias variable 
Dto dto = null; //make a dto object 

var dtoList = Session.QueryOver<School>() 
    .JoinAlias(x => x.Earnings,() => w) 
    .Where(x => x.isActive) 
    .SelectList(list => list 
     .SelectSum(x => x.StudentCount).WithAlias(() => dto.StudentCountSum) 
     .SelectSum(() => w.TotalEarningsAmount).WithAlias(() => dto.TotalEarningsAmountSum) 
     .SelectAvg(() => w.TotalEarningsAmount).WithAlias(() => dto.TotalEarningsAmountAvg) 
     .SelectCount(() => w.TotalEarningsAmount).WithAlias(() => dto.TotalEarningsAmountCount)) 
    .TransformUsing(Transformers.AlaisToBean<Dto>()) 
    .List<Dto>();