【问题标题】:How to Execute Stored Procedure in MVC如何在 MVC 中执行存储过程
【发布时间】:2013-11-29 11:28:32
【问题描述】:

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

我正在使用数据库优先方法,并且我创建了一些存储过程,例如:

CREATE PROCEDURE [dbo].[TestProcedure]
@parameter1 int
 AS
set @parameter1 = 1
return @parameter1

我在我的 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);

            }

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

【问题讨论】:

  • 请在此代码上建议我应该在此做什么
  • 要从存储过程中返回一个值,您需要显式声明 .在存储过程中添加一个参数为:@parameter2 int OUT 并返回此参数中的值。然后您可以在应用程序中进行更改以获取第二个参数,并将参数方向作为输出。
  • @Deepshikha 是对的,但您可能还应该在参数声明中定义它:var parameter1=new SqlParameter("parameter1",1){Direction = ParameterDirection.InputOutput}
  • 它不返回值“1”,它只是抛出“无法评估儿童”的异常。
  • @user2959554,要求人们“尽快”建议代码有点不礼貌。

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


【解决方案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);     
    }
}

【讨论】:

    【解决方案2】:

    我已经执行了存储过程,例如, 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 &amp; DocumentsResult 是输出参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-15
      • 1970-01-01
      • 2019-06-23
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多