繁体   English   中英

更新数据库首先无法在代码中工作

[英]update-database not working in Code first

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

1-启用迁移

2-添加迁移MYclass

3-更新数据库

Myclass(new created)我在UP()方法中编写我的SP代码以创建SP。 工作正常!! 但是,当我更改SP并再次运行update-database时,它不起作用,我需要执行另一个add-migration命令来创建新的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");
        }

当我再次运行update-database时,结果是"No pending explicit migration"

即使我将SQL查询更改为“ Alter procedure ....”,它也不起作用,也不会发生任何更改。 谢谢

EDITED

考虑这种情况,我想更改我的SP名称(仅作为示例),因此我需要将查询更改为“ Alter store procedure tespSP2 ...”或任何其他更改,是否应该再次运行add-migration? 还是应该更新数据库?

在添加到_migrationHistory表中的实体框架迁移中,您可以删除此表的最后一行[不推荐]

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

Update-Database -TargetMigration:MigrationsName

然后使用update-database -force

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM