更新数据库在代码优先中不起作用

update-database not working in Code first

我正在使用实体框架和 Codefirst 创建存储过程。 正如我所说,我们应该在包管理器中执行一些步骤来创建 SP。

1 - 启用迁移

2- 添加迁移 MYclass

3-更新数据库

并且在 Myclass(new created) 我在 UP() 方法中编写了我的 SP 代码来创建 SP。工作正常!!但是,当我再次更改 SP 和 运行 更新数据库时,它不起作用,我需要执行另一个添加迁移命令来创建新的 MYclass2。那正确吗?我的意思是每次我都应该写添加迁移?

这是我的代码

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

当我再次 运行 更新数据库时,结果是 "No pending explicit migration"

即使我将 SQL 查询更改为 "Alter procedure...." 它也不起作用,没有任何变化发生。 谢谢

已编辑

考虑到这种情况,我想更改我的 SP 名称(只是一个例子) 所以我需要将查询更改为 "Alter store procedure tespSP2 ..." 或任何其他更改,我应该 运行 再次添加迁移吗?或者 update-database 应该这样做??

in entity framework migrations added to a _migrationHistory table,你可以删除这个table的最后一行[不推荐]

或者您可以使用 rollback/undo 命令

Update-Database -TargetMigration:MigrationsName

然后使用update-database -force