Сегодня я выполняю обзор различных инструментов ORM и генераторов DAL. Один из них - NetTiers.
У меня есть классическая модель БД с клиентом, заказ, заказ и т.д.
Я хочу выполнить сложное внутреннее соединение в этих таблицах. Это оригинальный SQL-запрос:
SELECT [Contact].LastName, SUM(OrderRow.Amount * Product.Price) TotalAmount
FROM Contact
INNER JOIN [Order] ON [Contact].ContactId=[Order].ContactId
INNER JOIN [OrderRow] ON [Order].OrderId=[OrderRow].OrderId
INNER JOIN [Product]ON OrderRow.ProductId=Product.ProductId
GROUP BY [OrderRow].OrderId, [Contact].LastName
HAVING SUM(OrderRow.Amount * Product.Price) > 100
Я не мог найти способ сделать это в коде с помощью NetTiers. Можете ли вы?
(ps: использование VS2008 SP1 и SQLServer2008 SP1)
Вы не можете сделать это без специальной хранимой процедуры. Решение здесь: http://benpowell.org/paging-and-sorting-in-a-nettiers-custom-stored-procedure/
Почему бы не создать для него настраиваемую хранимую процедуру, nettiers генерирует определенные методы для хранимых процедур в классе TableProvider, после чего вы можете просто называть ваш метод. возвращаемый тип метода, вероятно, будет DataSet в этом случае (не уверен!). См. здесь