Potrei davvero usare alcune indicazioni su come portare questa query sql su NHibernate QueryOver. I miei tentativi erano di usare Linq perché sono un po 'più familiare con Linq. Il progetto su cui stiamo lavorando utilizza QueryOver, quindi per il momento potrebbe essere meglio rimanere su quella rotta.NHibernate Come convertire questa query SQL in QueryOver o Linq
di lavoro di query SQL: Rounds DateTime a 1 minuto e gruppi/Ordinamenti/conta correttamente ...
select dateadd(minute,(datediff(minute,0,dateTimeColumn)/1)*1,0), COUNT(*)
from PartData
group by dateadd(minute,(datediff(minute,0,dateTimeColumn)/1)*1,0)
order by dateadd(minute,(datediff(minute,0,dateTimeColumn)/1)*1,0)
rendimenti attesi risultati di:
2012-08-31 00:00:00.000, 3
2012-08-31 00:01:00.000, 4
2012-08-31 00:02:00.000, 3
2012-08-31 00:03:00.000, 3
2012-08-31 00:04:00.000, 4
2012-08-31 00:05:00.000, 3
2012-08-31 00:06:00.000, 3
2012-08-31 00:07:00.000, 4
2012-08-31 00:08:00.000, 3
EDIT
Mi sto avvicinando ...
private IQueryOver<entities.PartData, entities.PartData> PartPerHourQuery(ISession session)
{
return session.QueryOver<entities.PartData>()
.Select(
Projections.Alias(
Projections.GroupProperty(
Projections.SqlFunction(
new SQLFunctionTemplate(NHibernateUtil.DateTime, "DateAdd(mm,1,Date)"),
NHibernateUtil.DateTime, _partsDate))
, "Date"),
Projections.Alias(Projections.RowCount(), "Count"))
.TransformUsing(Transformers.AliasToBean<entities.PartsPerHour>());
}
rese il seguente SQL:
SELECT DateAdd(mm,1,dateTimeColumn), count(*)
FROM [PartData]
GROUP BY DateAdd(mm,1,dateTimeColumn)
solo bisogno di capire come ottenere il datediff in là :)
Wow, non mi rendevo conto che era possibile! Molto bene! – Rippo