Nhibernate QueryOver Представление GroupBy во внутреннем объединении

Так что я новичок в Nhibernate, пришедший из EF. После того, как я попробовал Query<> и испытал сильное потрясение из-за отсутствия поддерживаемых функций и бессмысленного sql, я пробовал QueryOver, но далеко не ушел. Может кто-нибудь помочь мне с представлением QueryOver этого SQL?

select p2.* from
   PurchaseOrders p2 inner join 
   (SELECT po.PurchaseOrderID, MAX(POS.StatusDate) as LastUpdate FROM PurchaseOrders Po 
   inner join PurchaseOrderStatuses POS on PO.PurchaseOrderID = pos.PurchaseOrderID 
   where pos.StatusID = :@status and po.SupplierID = :@supplierId
   group by po.PurchaseOrderID) p1
   on p2.PurchaseOrderID = p1.PurchaseOrderID

1 ответ

Текущее решение выглядит следующим образом, но требует дальнейшей работы:

 int supplierId = 20;
         Status.StatusesEnum status = Status.StatusesEnum.Complete;

         PurchaseOrder orderAlias = null;

         IList<PurchaseOrder> orders =
                 Session.QueryOver<PurchaseOrder>(() => orderAlias).WithSubquery
                   .WhereExists(QueryOver.Of<PurchaseOrderStatus>()
                      .Where(c => c.PurchaseOrder.Id == orderAlias.Id)
                      .OrderBy(c=>c.StatusDate)
                      .Desc
                      .Select(c=>c.Status.Id == (int)status)
                      .Take(1)
                      //.Having status = statusID
                      )
                   .Where(o=>o.Supplier.Id == supplierId)
                   .List<PurchaseOrder>();
Другие вопросы по тегам