c# - 在 Asp.Net MVC 5 中使用 Entity Framework 6 代码优先方法调用存储过程

标签 c# asp.net-mvc stored-procedures ef-code-first entity-framework-6

我们使用 Ado.Net 从 ASP.NET MVC 中的 C# 代码处理数据库。我想使用 Entity Framework,所以我需要使用它的存储过程,从 EF 调用存储过程。

关于如何将存储过程与 Entity Framework 一起使用的示例很少,但没有一个特定于 ASP.NET MVC 和代码优先(至少我找不到)。

它们是一个好的开始,但我需要更多、更好的信息和更好的示例!

我有这个存储过程:

Create Procedure spAddEmployee  
    @Name nvarchar(50),  
    @Gender nvarchar(20),  
    @Salary int,  
    @EmployeeId int Out  
as  
Begin  
    Insert into tblEmployees 
    values(@Name, @Gender, @Salary)  

    Select @EmployeeId = SCOPE_IDENTITY()  
 End

所以@Name@Salary@Gender是输入参数,@EmployeeId是输出参数,它返回新添加的员工的ID

谁能告诉我如何使用 Entity Framework(代码优先)通过参数调用这个存储过程?

最佳答案

您可以调用 DbContext 类中的存储过程,如下所示。

this.Database.SqlQuery<YourEntityType>("storedProcedureName",params);

更新:

这是一个如何在 ActionResult 中调用 SP 的示例:

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);     
    }
}

第二次更新:

对于多个参数,你可以很容易地像这样:

var param1 = new SqlParameter(); 
param1.ParameterName = "@Value1"; 
param1.SqlDbType = SqlDbType.Int; 
param1.SqlValue = val1;

var param2 = new SqlParameter(); 
param2.ParameterName = "@Value2"; 
param2.SqlDbType = SqlDbType.NVarChar; 
param2.SqlValue = val2;

var result = db.tablename.SqlQuery("SP_Name @Value1,@Value2", param1, param2 ).ToList();

关于c# - 在 Asp.Net MVC 5 中使用 Entity Framework 6 代码优先方法调用存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41341854/

相关文章:

c# - 使用 docker 将 microsoft bot 框架部署到 heroku 时出现问题

c# - Sleep() 以 "wrong"顺序执行。

asp.net - 在 MVC 3 中使用 DependencyResolver 进行 Controller 实例化时出错

asp.net-mvc - 在 MVC2 站点中托管 WCF

mysql - 有什么方法可以同时存储 SELECT 结果并输出结果集吗?

c# - NLog with AutoFac - 如何给记录器名称

c# - 将 Curl 脚本转换为 C#

c# - ASP.net Identity v2.0.0 电子邮件确认/重置密码错误

存储过程中的 SQL 事务处理

java - 从 Java 调用其中包含游标和时态表的 MS Sql 服务器存储过程?