Entity framework 实体框架代码优先&;存储过程
我在应用程序中使用代码优先的方法。我已经使用这种方法生成了实体(表)。现在我想通过代码创建一个存储过程。当我尝试迁移选项但失败时,是否有人可以指导我 我使用实体框架代码优先的方法。使用这个方法,我创建了Customer和一些其他实体 现在,我想使用上下文类创建一个存储过程“GetCustomers”,并传递参数,然后在集合中获取结果集 它必须返回2个集合,如下所示 创建过程getcustomer@name nvarchar(max),@zipcode int 作为 从Customer中选择id、name、zipcode,其中name类似(@name) 从客户中选择id、名称和zipcode,其中zipcode=@zipcode 我想使用上下文类创建一个存储过程“GetCustomers”,而不是在DB中手动执行。我需要实现以下结果: 1.单独传递name参数并返回第一个集合 2.单独传递zipcode参数并返回第二个集合Entity framework 实体框架代码优先&;存储过程,entity-framework,stored-procedures,ef-code-first,Entity Framework,Stored Procedures,Ef Code First,我在应用程序中使用代码优先的方法。我已经使用这种方法生成了实体(表)。现在我想通过代码创建一个存储过程。当我尝试迁移选项但失败时,是否有人可以指导我 我使用实体框架代码优先的方法。使用这个方法,我创建了Customer和一些其他实体 现在,我想使用上下文类创建一个存储过程“GetCustomers”,并传递参数,然后在集合中获取结果集 它必须返回2个集合,如下所示 创建过程getcustomer@name nvarchar(max),@zipcode int 作为 从Customer中选择id、
3.使用merge将1和2的结果集合合并到单个集合中您可以使用Add使用CreateStoredProcedure()方法创建/生成存储过程- 实体框架中的迁移选项 步骤1:使用包管理器控制台中的添加迁移SP\u DO\u NOT\u DELETE生成迁移脚本。如果没有模型更改,那么系统将生成如下所示的空迁移脚本
public partial class SP_DO_NOT_DELETE : DbMigration
{
public override void Up()
{
}
public override void Down()
{
}
}
步骤2:生成脚本后,请在Up()和down()方法中添加存储过程,如下所示注意:下面的示例中,“dbo.GetNextDisplayId”是将用于使用存储过程获取NextAvailableDisplayId的存储过程名称
public partial class SP_DO_NOT_DELETE : DbMigration
{
public override void Up()
{
CreateStoredProcedure(
"dbo.GetNextDisplayId",
body:
@"DECLARE @requestid INT
SELECT @requestid = NextAvailableDisplayId
FROM [TrackingNumberHistories] WITH (TABLOCKX)
UPDATE [TrackingNumberHistories]
SET NextAvailableDisplayId = @requestid + 1
SELECT @requestid AS 'NextAvailableDisplayId'"
);
}
public override void Down()
{
DropStoredProcedure("dbo.GetNextDisplayId");
}
}
注意:Up()中的CreateStoredProcedure()方法将在运行迁移脚本时自动创建存储过程<当我们在迁移脚本中自动回滚/删除存储过程时,Down()中的strong>DropStoredProcedure()将用于删除存储过程
希望这能帮助你前进 如果不首先运行addmigration,我们是否应该有一个专用的存储过程文件(就像我们有Context类一样)&在运行updatedatabase时,它应该创建SP@lokanathdas您可以在ModelCreating(DbModelBuilder modelBuilder){modelBuilder.Entity()上使用thi:protected override void.MapToStoredProcedures();}请参阅此链接: