我正在使用实体框架和Codefirst来创建一个存储过程。 在我的时候,我们应该在包管理器中做一些步骤来创建SP。
1 - 启用迁移
2- add-migration MYclass
3- update-database
并在Myclass(new created)
中我用UP()方法编写SP代码来创建SP。工作良好!!但是,当我更改SP并再次运行update-database时,它不起作用,我需要执行另一个add-migration命令来创建新的MYclass2。是对的吗?我的意思是每次我都应该编写add-migration?
这是我的代码
public override void Up()
{
Sql(@"Create procedure testSp
as
select std.Id as stdName, std.Name as MajorName, mj.Name from dbo.Students as std
inner join dbo.Majors as mj on std.Id = mj.Id
");
}
public override void Down()
{
Sql("drop procedure testSp");
}
当我再次运行update-database时,结果为"No pending explicit migration"
即使我将SQL查询更改为"更改程序...."它不起作用,没有变化。 感谢
EDITED
考虑这种情况,我想更改我的SP名称(只是一个例子) 所以我需要将查询更改为"更改商店程序tespSP2 ..." 或者任何其他更改,我应该再次运行add-migration吗?或更新数据库应该这样做??
答案 0 :(得分:1)
在添加到_migrationHistory表的实体框架迁移中,您可以删除此表的最后一行[不建议使用]
或者您可以使用rollback / undo命令
Update-Database -TargetMigration:MigrationsName
然后使用update-database -force