ASP.NET MVC4从具有实体框架的存储过程返回输出

本文关键字:框架 存储过程 返回 输出 实体 NET MVC4 ASP | 更新日期: 2023-09-27 18:10:44

我一直在尝试从存储过程中获得一个简单的输出

ALTER PROCEDURE [dbo].[sp_getrandomnumber]
        @randoms int output
AS
begin
  set @randoms =12345
end

和我的MVC

    public ActionResult Index()
    {
        var qry = db.sp_getrandomnumber(ref randoms); 
      ......
     return View();
    }
}

但是当我编译时,我在var qry部分得到错误,说以下

方法' sp_gerandomnumber '不重载

名称'randoms'在当前上下文中不存在

我试着遵循这个教程http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx

提前感谢别哭

ASP.NET MVC4从具有实体框架的存储过程返回输出

您的问题是您的SPROC输出是int。

请看以下引用自Scott Gu的文章

"LINQ to SQL将SPROCs中的"out"参数映射为引用参数(ref关键字),对于值类型,将参数声明为可空。"

所以你需要确保你将randoms声明为一个可空的int。

将sp调用更改为

public ActionResult Index()
{   
    // @randoms int output from SPROC.
    int? randoms = null;
    // qry would contain a select if you had one in the SPROC.
    var qry = db.sp_getrandomnumber(ref randoms); 
    // randoms is 12345
    return View();
}