堆栈溢出

我已经完成了我的迁移,我在初始迁移时使用了IgnoreChanges ,但现在我想删除所有迁移,并从初始迁移开始,执行所有逻辑。

当我删除文件夹中的迁移并尝试Add-Migration它不会生成完整文件(它是空的 - 因为自从我上次删除迁移后,我没有做任何更改)。

是否有任何Disable-Migrations命令,因此我可以重新运行Enable-Migrations


你需要 :

  • 删除状态:删除项目中的迁移文件夹; 和
  • 删除数据库中的__MigrationHistory表(可能位于系统表下); 然后
  • 在程序包管理器控制台中运行以下命令:

    Enable-Migrations -EnableAutomaticMigrations -Force
    

    使用或不使用-EnableAutomaticMigrations

  • 最后,你可以运行:

    Add-Migration Initial
    

  • 问题:你已经搞糟了你的迁移,你想重置它而不删除你现有的表。

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

    该怎么办:

  • 从Migrations_History表中删除现有的迁移。

  • 从Migrations文件夹中删除现有的迁移。

  • 运行添加迁移重置。 这将在您的Migration文件夹中创建一个包含创建表的迁移(但它不会运行它,因此它不会出错。)

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

  • 现在运行update-database。 它将应用迁移(实际上并未更改数据库)并在MigrationHistory中创建快照行。

  • 您现在已经重置了您的迁移,并可能继续进行正常的迁移。


    怎么样

    Update-Database –TargetMigration: $InitialDatabase
    

    在包管理器控制台中? 它应该将所有更新重置为其早期状态。

    参考链接:Code First Migrations - 迁移到特定版本(包括降级)

    链接地址: http://www.djcxy.com/p/62323.html

    上一篇: Stack Overflow

    下一篇: Liquibase database migration with empty and preexisting database