将两个参数传递给存储过程并获取值

时间:2018-04-03 15:28:18

标签: c# sql-server asp.net-mvc stored-procedures

首先检查下面的控制器代码。然后还检查包含SQL Server Management Studio中的存储过程代码的底部图片。

现在问题是:我的PagedSearchedUserItems过程需要两个int参数,它将返回几列数据的输出(您可以从下面的屏幕截图中看到数据样本)。

在我的控制器中,我不知道如何传递两个参数并在变量Items中获取该数据。你可以修改我的控制器代码来正确传递两个参数,并获取我的变量“Items”的所有值吗?

控制器代码:

using (var ctx = new db_demoEntities())
{
    var Items = ctx.Database.SqlQuery<SearchedUserItems>("EXEC PagedSearchedUserItems @TakeFrom",2).ToList<SearchedUserItems>();
}

存储过程代码:

CREATE PROCEDURE PagedSearchedUserItems
    @TakeFrom INT,
    @TakePerPage INT
AS
BEGIN
    SELECT * 
    FROM SearchedUserItems 
    ORDER BY Id 
        OFFSET @TakeFrom ROWS 
        FETCH NEXT @TakePerPage ROWS ONLY;
END

PagedSearchedUserItems 2,5

SQL Server Management Studio screenshot

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找类似的东西。传递两个参数时,此代码应该可以正常工作。我假设&#34; SearchedUserItems&#34;对象正在加工您的数据模型。

using (var ctx = new db_demoEntities())
{
object[] xparams = {
new SqlParameter("@TakeFrom", 2),
new SqlParameter("@TakePerPage", 5)};

var Items = ctx.Database.SqlQuery<SearchedUserItems>("EXEC PagedSearchedUserItems @TakeFrom, @TakePerPage", xparams).ToList<SearchedUserItems>();
}