Я ищу генератор SQL, который может выполнять функции агрегации нового окна, выпущенные в SQL Server 2012. Я уже рассматривал Subsonic и LINQ, но еще не посмотрел NHibernate и некоторые другие.C# SQL Generator для выполнения новых функций окна T-SQL в SQL Server 2012?
В качестве примера, используя синтаксис в дозвуковых, я хотел бы сделать следующее:
var query = new Select(Aggregate.Avg("Revenue", "MovingAverageRevenue")
.PartitionBy("Account_ID").OrderBy("Offset").RowsBetween(-5,-1)))
.From("Purchases")
.Where("MovingAverageRevenue")
.IsGreaterThan(500);
Что бы перевести на что-то вроде:
SELECT Aggregates.MovingAverageRevenue
FROM
(
SELECT AVG(Revenue) OVER
(PARTITION BY Account_ID
ORDER BY Offset
ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS MovingAverageRevenue
FROM Purchases
) Aggregates
WHERE Aggregates.MovingAverageRevenue > 500
Раствор с участием расширения существующего ORM также может работать, предположительно.