为了账号安全,请及时绑定邮箱和手机立即绑定

重置实体框架迁移

重置实体框架迁移

MMTTMM 2019-08-06 12:54:28
重置实体框架迁移我已经搞砸了我的迁移,我用于IgnoreChanges初始迁移,但现在我想要删除所有迁移,并开始使用所有逻辑进行初始迁移。当我删除文件夹中的迁移并尝试Add-Migration它并不生成一个完整的文件(它是空的 - 因为我上次没有做任何更改,但现在已删除,迁移)。是否有任何Disable-Migrations命令,所以我可以重新运行Enable-Migrations?
查看完整描述

3 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

你需要 :

  1. 删除状态:删除项目中的迁移文件夹; 和

  2. 删除__MigrationHistory数据库中的表(可能在系统表下); 然后

  3. 在程序包管理器控制台中运行以下命令:

    Enable-Migrations -EnableAutomaticMigrations -Force

    使用或不使用 -EnableAutomaticMigrations

  4. 最后,你可以运行:

    Add-Migration Initial


查看完整回答
反对 回复 2019-08-06
?
ibeautiful

TA贡献1993条经验 获得超5个赞

问题:您已经搞砸了迁移,并且想要在不删除现有表的情况下重置它。

问题:由于EF希望从头开始创建表,因此无法使用数据库中的现有表重置迁移。

该怎么办:

  1. 从Migrations_History表中删除现有迁移。

  2. 从“迁移”文件夹中删除现有迁移。

  3. 运行add-migration Reset。这将在您的Migration文件夹中创建一个包含创建表的迁移(但它不会运行它,因此不会出错。)

  4. 您现在需要在MigrationHistory表中创建初始行,以便EF具有当前状态的快照。如果您应用迁移,EF将执行此操作。但是,由于数据库中已存在表,因此无法应用刚刚进行的迁移。所以进入迁移并注释掉“Up”方法中的所有代码。

  5. 现在运行update-database。它将应用迁移(而不是实际更改数据库)并在MigrationHistory中创建快照行。

您现在已重置迁移,并可能继续正常迁移。


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 490 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信