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

时间:2017-05-29 09:15:52

标签: c# jquery asp.net-mvc entity-framework stored-procedures

我在数据库中有一个查询,它通过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

2 个答案:

答案 0 :(得分:6)

根据我的理解,您希望执行在多个表上运行的存储过程,然后将Json Data返回到View。您实际上可以执行以下操作:

方法1 :(使用ExecuteSqlCommand)

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

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

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

方法3:(清洁方法)

1。)根据存储过程中的返回参数创建模型,让我们将其称为YourType类。 2.)使用以下代码调用存储的pocedure:

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

请根据需要修改代码。

答案 1 :(得分:0)

如果您已在edmx中映射它,请尝试此

<Button>
    <TextBlock>
        <Run Text="&#xE939;"
             FontFamily="Segoe MDL2 Assets" />
        <Run Text="Feedback" />
    </TextBlock>
</Button>