nHibernate Projection.Sum для объединенных столбцов - PullRequest
0 голосов
/ 22 апреля 2020

Я создаю запрос с критериями, как это:

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, где найти столбец длины / ширины?

...