gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:48:32 24 4
gpt4 key购买 nike

我们使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com