Każdy wie, jak korzystać Projections.Conditional aby stworzyć coś w rodzaju „przypadku ... kiedy ...”Projekcje. Warunkowe - jak z niego korzystać?
Poniższy kod daje zły zapytanie:
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")
);
Wytworzona stwierdzenie jest niekompletny i kolejność parametrów jest błędna.
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'
jaki jest prawidłowy sposób korzystania z Projections.Conditional?
ja sądzę, że to błąd. Próbowałem również na wiele sposobów, a kolejność parametrów jest splątana. Jaką wersję NH używasz? – asgerhallas