Я создаю запрос с критериями, как это:
DetachedCriteria auftragCriteria = DetachedCriteria.For<Auftrag>("a");
Я объединяю несколько таблиц с:
DetachedCriteria positionJoin = auftragCriteria.CreateCriteria("a.Positionen", "p", JoinType.LeftOuterJoin);
И я использую проекцию для заполнения моего объекта SubTypeAuftrag
ProjectionList projectionListSubTypeAuftrag = Projections.ProjectionList();
Теперь мне нужно воссоздать следующий sql код:
cast(sum(p.length * p.width / 1000) as decimal)
Я попробовал следующее:
projectionListSubTypeAuftrag.Add(Projections.Sum<Position>(p => p.length * p.width / 1000), "M1");
Это приводит к ошибке:
System.InvalidOperationException: 'variable 'p' of type 'xxx.Base.Position' referenced from scope '', but it is not defined'
Я также пытался:
projectionListSubTypeAuftrag.Add(
Projections.Cast(
NHibernateUtil.Decimal,
Projections.SqlProjection("p.length * p.width/ 1000 AS result", new[] { "result" }, new IType[] { NHibernateUtil.Double })
),
"M1"
);
Как мне указать nHibernate, где найти столбец длины / ширины?