繁体   English   中英

如何在实体框架中运行存储过程

[英]how to run stored procedure in Entity framework

我在数据库中有一个查询,它通过 Ajax 使用 Json 带来另一个查询作为响应。 我已经创建了接受该查询并带来多列的存储过程。

我不知道如何在实体框架中运行存储过程。

需要帮助。

方法:-

public ActionResult DropDownn(string query)
    {
        using (DynamicDBEntities db = new DynamicDBEntities())
        {
            //var dbQuery = db.Database.SqlQuery<Cust_mas>(query).ToList();
            //return Json(courseList, JsonRequestBehavior.AllowGet);
        }
    }

SP:-
更改程序 [dbo].[SP_DynamicCtrl]

@query nvarchar(1000) 
As
begin
execute sp_executesql @query;
end

按照我的理解,你要执行一个在多个表上运行的存储过程,然后返回Json数据给View。 您实际上可以执行以下操作:

方法一:(使用ExecuteSqlCommand)

SqlParameter param1 = new SqlParameter("@query", query);        
var result = db.Database.ExecuteSqlCommand("SP_DynamicCtrl @query", 
                              param1);

方法二:(在SqlQuery上使用对象类型)

SqlParameter param1 = new SqlParameter("@query", query);
Var result = db.Database.SqlQuery<Object>("exec SP_DynamicCtrl @query", param1);

方法 3:(更清洁的方法)

1.) 根据存储过程的返回参数创建一个模型,我们称之为YourType类。 2.) 使用下面的代码来调用存储的程序:

SqlParameter param1 = new SqlParameter("@query", query);
Var result = db.Database.SqlQuery<YourType>("exec SP_DynamicCtrl @query", param1);

从上述查询获得结果后,您可以将其转换为 JSON,以便在控制器中返回:

return Json(result, JsonRequestBehavior.AllowGet); //Typecast the result as per your need

请根据您的需要修改代码。

如果您已将其映射到 edmx 中,请尝试此操作

 public ActionResult DropDownn(string query)
    {
        using (DynamicDBEntities db = new DynamicDBEntities())
        {

       var result = context.SP_DynamicCtrl(query);
        return result.FirstOrDefault();
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM