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