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