如问题所示,这适用于尚未发布的开发类型环境中的迁移。
可通过以下步骤解决此问题:将数据库还原到上一次良好的迁移,从Entity Framework项目中删除不良的迁移,生成新的迁移并将其应用于数据库。注意:如果使用的是EF Core,从注释中判断,这些确切的命令可能不再适用。
步骤1:还原至先前的迁移
如果您尚未应用迁移,则可以跳过此部分。要将数据库架构还原到先前的位置,请发出带有-TargetMigration选项的Update-Database命令,指定最后一次良好的迁移。如果您的实体框架代码位于解决方案中的其他项目中,则可能需要使用“ -Project”选项或在程序包管理器控制台中切换默认项目。
Update-Database –TargetMigration: <name of last good migration>
要获取最后一次良好迁移的名称,请使用“ Get-Migrations”命令来获取已应用于数据库的迁移名称的列表。
PM> Get-Migrations
Retrieving migrations that have been applied to the target database.
201508242303096_Bad_Migration
201508211842590_The_Migration_applied_before_it
201508211440252_And_another
此列表首先显示最近应用的迁移。在列表中选择要降级的迁移,即在要降级的迁移之前应用的迁移。现在发布一个更新数据库。
Update-Database –TargetMigration: "<the migration applied before it>"
在指定的迁移之后应用的所有迁移都将降级,以便从最先应用的最新迁移开始。
步骤2:从专案中删除迁移
remove-migration name_of_bad_migration
如果该remove-migration
命令在您的Entity Framework版本中不可用,请手动删除EF项目“迁移”文件夹中不需要的迁移文件。此时,您可以自由创建一个新的迁移并将其应用于数据库。
步骤3:添加新迁移
add-migration my_new_migration
步骤4:将迁移应用到数据库
update-database