定义LINQ查询以将ASP.NET表转换为ASP.NET WebAPI中的新数据透视表

时间:2015-09-14 14:37:08

标签: c# sql-server linq stored-procedures asp.net-web-api

我已经通过SQL Server中的存储过程创建了一个数据透视表。但问题是当我在实体框架中将SP添加到我的实体数据模型中时它会给我返回类型" INT"正如您在以下代码中看到的那样:

TestContext.cs:

   public virtual int getMonthIsin(Nullable<System.DateTime> fromDate, Nullable<System.DateTime> toDate)
            {
                var fromDateParameter = fromDate.HasValue ?
                    new ObjectParameter("fromDate", fromDate) :
                    new ObjectParameter("fromDate", typeof(System.DateTime));

                var toDateParameter = toDate.HasValue ?
                    new ObjectParameter("toDate", toDate) :
                    new ObjectParameter("toDate", typeof(System.DateTime));

                return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("getMonthIsin", fromDateParameter, toDateParameter);
            }

当我单击功能导入中的SP(EDM)并调用列信息时,它会获得具有正确列的正确数据透视表。但我不知道如何使用WebApi返回它。

好吧,我的想法是,将数据透视表定义为LINQ查询。

这是SQL代码:

ALTER PROCEDURE [dbo].[getMonthIsin]
    @fromDate datetime,
    @toDate datetime
AS
BEGIN
    DECLARE @colIsin nvarchar(max)
    DECLARE @query nvarchar(max)

    SET FMTONLY OFF;

    WITH vals AS (
        SELECT DISTINCT ds.QR_Fond_isin AS isin
        FROM QR_DS021s ds
    )

    SELECT @colIsin = COALESCE(@colIsin + ', ', '') + '['+ isin +']'
    FROM vals
    ORDER BY isin

    SET @query = 'SELECT *
                    FROM (SELECT ROUND(ds.ct_quot_rate,0) AS Erfuellungsgrad,
                                 ROUND(ds.ct_quot_rate,0) AS Quote,
                                 ds.QR_Fond_isin AS isin
                          FROM QR_DS021s ds INNER JOIN QR_Fonds f ON ds.QR_Fond_isin = f.isin
                          WHERE ds.datum >= @from_val AND ds.datum <= @to_val
                          ) t
                          PIVOT (
                            COUNT(Quote)
                            FOR isin IN ('+ @colIsin +')
                          ) p
                          ORDER BY Erfuellungsgrad DESC'

    EXEC sp_executesql @query, N'@from_val datetime, @to_val datetime', @from_val = @fromDate, @to_val = @toDate 

有人有想法在我的webapi中定义LINQ查询的SQL查询吗?或者如果可能的话,如何在WebAPI中定义存储过程?!

0 个答案:

没有答案