NHibernate QueryOver select entity and aggregates

Я хочу отобразить простую сетку данных, которая содержит данные объекта и совокупные данные его дочерних элементов. Например, можно использовать заказ и позиции. Я хочу отобразить информацию о заказе и количество позиций.

OrderID, OrderDate, NumOfLineItems

Обычно в SQL это можно сделать разными способами. Но это единственный способ, который, как я мог подумать, мог бы сработать при переводе в NHibernate.

SELECT o.OrderID, OrderDate, NumOfLineItems
FROM #Orders o
INNER JOIN
(SELECT o2.OrderID, COUNT(*) As NumOfLineItems FROM #LineItems l
INNER JOIN #Orders o2 ON o2.OrderID = l.OrderID
WHERE UserID = 1 GROUP BY o2.OrderID) t1 ON o.OrderID = t1.OrderID
WHERE UserID = 1

Я знаю, что есть другие способы, но я пытаюсь придумать, как NHibernate позволит мне использовать синтаксис QueryOver. Я не хочу использовать производные столбцы. Я стараюсь избегать написания SQL.

Для моих сущностей у меня есть сущность Order и сущность AggregatedOrder, которая в данном случае будет моим DTO, и я планирую использовать псевдоним преобразователя для копирования в нее данных.

Я просто понятия не имею, как это понять.

Все, что у меня есть на данный момент:

        QueryOver<LineItem> x = QueryOver.Of<LineItem>()
            .SelectList(p => p .SelectCount(l => l.Id).WithAlias(() => itemAlias.NumOfLineItems))
            .JoinQueryOver<Order>(l => l.Order)
            .Where(o => o.UserID == userID)


        var y = session.QueryOver<Listing>()
            .JoinQueryOver<Bid>(x); // no idea whats going on here
6
задан BradLaney 23 June 2011 в 23:55
поделиться