如何在MVC中执行存储过程

时间:2013-11-29 11:28:33

标签: sql sql-server asp.net-mvc asp.net-mvc-3 entity-framework

我想在我的MVC应用程序中执行存储过程。

我正在使用Database First方法&我创建了一些像::

这样的存储过程
CREATE PROCEDURE [dbo].[TestProcedure]
@parameter1 int
 AS
set @parameter1 = 1
return @parameter1

我在My MVC中使用了一些代码,如::

 private CueEntities db = new CueEntities();
     public ActionResult ExecuteProcedure()
            {
                var parameter1=new SqlParameter("parameter1",1);
                var test = db.Database.SqlQuery<CueEntities>("exec TestProcedure @parameter1",parameter1);
                var check=db.TestProcedure(1);
                return Json(test);

            }

但我无法获得返回值&amp;无法知道存储过程是否已执行。 请尽快帮助我。

2 个答案:

答案 0 :(得分:1)

将程序导入edmx后,请更改您的Action方法,如下所示:

public ActionResult ExecuteProcedure()
{
   using(var  db = new CueEntities())
   {
     var parameter = 1;
     var query =  db.Database.SqlQuery<TestProcedure>("TestProcedure @parameter1", 
                    new  SqlParameter("@parameter1", parameter)).ToList();          
        return Json(query,JsonRequestBehavior.AllowGet);     
    }
}

答案 1 :(得分:1)

我已执行存储过程,如, 1)仅用于输入参数

var check=db.TestProcedure(1);

2)对于存储过程中的输入和输出参数,

 public ActionResult GenerateDocumentInvoice(int CompanyID, int UserID, string Documents)
 {
     var Result = new ObjectParameter("Result", new char());
     var exec = db.GenerateInvoice(CompanyID, UserID, Documents, Result);
     return Json(3);
 }

其中存储过程中的输入参数是:: CompanyID, UserID & Documents 虽然Result是输出参数。