ASP.NET MVC4使用Entity Framework从存储过程返回输出

时间:2013-04-24 10:23:15

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

我一直试图从存储过程中获取一个简单的输出

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_getrandomnumber'没有重载需要1个参数

     

当前上下文中不存在“randoms”这个名称

我尝试过本教程 http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx

非常感谢提前 碎甲弹

1 个答案:

答案 0 :(得分:1)

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

请参阅Scott Gu的文章中的以下引用。

“LINQ to SQL将”SPROC中的参数“映射”为参考参数(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();
}

找到另一个例子here