Cualquiera sabe cómo utilizar Projections.Conditional para producir algo así como "caso ... cuando ..."Proyecciones.Condicional - ¿Cómo usarlo?
El siguiente código da una consulta equivocada:
IProjection isError = Projections.Conditional(Expression.Eq("event.LogLevel", eLogLevel.Fatal.ToString()), Projections.Constant(1), Projections.Constant(0));
ICriteria criteria = Session.CreateCriteria(typeof(LogEvent), "event")
.Add(Restrictions.Eq("event.ApplID", "LogEventViewer"))
.SetProjection(Projections.ProjectionList()
.Add(Projections.GroupProperty("event.ApplID"))
.Add(Projections.RowCount(), "TotalCount")
.Add(Projections.Sum(isError), "ErrorCount")
);
La declaración se produce es incompleta y la el orden de los parámetros es incorrecto
exec sp_executesql N'
SELECT this_.strApplID as y0_
, count(distinct this_.lngLogEventID) as y1_
, sum((case when this_.strLogLevel = ? then ? else ? end)) as y2_
, this_.strApplID as y3_
FROM qryLogEvent this_
WHERE this_.strApplID = @p0
GROUP BY this_.strApplID'
,N'@p0 nvarchar(5),@p1 int,@p2 int,@p3 nvarchar(14)'
,@p0=N'Fatal',@p1=1,@p2=0,@p3=N'LogEventViewer'
cuál es la manera correcta de utilizar Projections.Conditional?
yo creo que es un error. Lo he intentado de muchas maneras también, y el orden de los parámetros está enredado. ¿Qué versión de NH estás usando? – asgerhallas