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