2013-05-10 1 views
1

Я ищу генератор 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 также может работать, предположительно.

ответ

-1

Не знаю точно, но я готов поспорить, что Microsoft не потратила времени на реализацию таких конструкций в LINQ-to-SQL, поскольку не было бы необходимости в нем, если LINQ-to -SQL уже работает хорошо.

Я не могу сказать много о Subsonic.