NHibernate Fluent group by

#nhibernate #group-by

#nhibernate #группировать по

Вопрос:

У меня есть этот критерий nhibernate:

        criteria.Add(Subqueries.PropertyIn("Id", DetachedCriteria.For<ReconItemReconSide>()
            .SetProjection(Projections.ProjectionList()
            .Add(Projections.GroupProperty("ReconItemFk"))
            .Add(Projections.Min("ReconciliationSideFk")))
            .Add(Expression.In(Projections.Property("ReconItemFk"), items))
            ));
  

-который становится этим запросом (я удалил некоторые поля из внешнего выбора, чтобы минимизировать длину здесь):

 SELECT this_.Id                        as Id8_0_
FROM   CI.BM_RECONCILIATION_SIDE this_
WHERE  this_.Id in (SELECT   this_0_.BM_RECON_ITEM               as y0_,
                         min(this_0_.BM_RECONCILIATION_SIDE) as y1_
                FROM     CI.BM_RECON_ITEM_RECON_SIDE this_0_
                WHERE    this_0_.BM_RECON_ITEM in (345061 /* :p0 */,345877 /* :p1 */)
                GROUP BY this_0_.BM_RECON_ITEM)
  

Проблема в том, что я хочу, чтобы внутренний выбор выбирал только одно поле (min(this_0_.BM_RECONCILIATION_SIDE)), но groupby также добавляет groupby-поле к выбору.

Я хочу иметь возможность создавать groupby без необходимости проецировать само поле groupby. Запрос должен выглядеть примерно так:

 SELECT this_.Id                        as Id8_0_
FROM   CI.BM_RECONCILIATION_SIDE this_
WHERE  this_.Id in (SELECT   
                         min(this_0_.BM_RECONCILIATION_SIDE) as y1_
                FROM     CI.BM_RECON_ITEM_RECON_SIDE this_0_
                WHERE    this_0_.BM_RECON_ITEM in (345061 /* :p0 */,345877 /* :p1 */)
                GROUP BY this_0_.BM_RECON_ITEM)
  

Есть идеи, как это решить?

Ответ №1:

ну, похоже, что это все еще открытая проблема с NHib.
как они всегда говорят — вы можете реализовать это самостоятельно .. 🙂

Комментарии:

1. Спасибо — это не приближает меня к решению, но показывает, что я не единственный, у кого есть эта проблема.