当我在VS2015中使用ASP运行PM> Remove-Migration -context BloggingContext时。NET Core项目使用EF Core我得到以下错误:

System.InvalidOperationException: The migration '20160703192724_MyFirstMigration' has already been applied to the database. Unapply it and try again. If the migration has been applied to other databases, consider reverting its changes using a new migration.    at Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsScaffolder.RemoveMigration(String projectDir, String rootNamespace, Boolean force) 
    at Microsoft.EntityFrameworkCore.Design.MigrationsOperations.RemoveMigration(String contextType, Boolean force) 
    at Microsoft.EntityFrameworkCore.Tools.Cli.MigrationsRemoveCommand.<>c__DisplayClass0_0.<Configure>b__0() 
    at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args) 
    at Microsoft.EntityFrameworkCore.Tools.Cli.Program.Main(String[] args) 
 The migration '20160703192724_MyFirstMigration' has already been applied to the database. Unapply it and try again. If the migration has been applied to other databases, consider reverting its changes using a new migration.

如何取消申请?我使用的是ASP的最新版本。NET Core 1.0, EF Core和VS2015更新3。


当前回答

您应该从“_efmigrationhistory”表中删除迁移'20160703192724_MyFirstMigration'记录。

否则,下面的命令将删除迁移和删除迁移文件夹:

PMC命令:

   > remove-migration -force

CLI命令:

   > dotnet ef migrations remove -f

CLI命令链接

关于PMC命令

其他回答

要完全删除所有迁移并重新开始,请执行以下操作:

dotnet ef database update 0
dotnet ef migrations remove

一般来说,如果您正在使用Package Manager Console,删除特定迁移的正确方法是引用迁移的名称

Update-Database -Migration {Name of Migration} -Context {context}

另一种删除你根据文档应用的最后一个迁移的方法是使用命令:

dotnet ef migrations remove

这个命令应该从解决方案目录中的开发人员命令提示符(如何打开命令提示符)执行。

例如,如果你的应用程序名为“application”,在文件夹c:\Projects中。那么你的路径应该是:

C:\Projects\Application

因为这个问题本身涉及到第一次迁移,所以这个答案适用于任何正在寻找恢复上次迁移的方法的人,因为大多数答案不包括替代场景(对我们大多数人来说,这不是我们的第一次迁移,我们不能抹掉整个迁移历史)。这些命令用于包管理器控制台。

假设你的代码中有以下迁移:

20220110 _initialmigration 20200210 _goodmigration 20200210 _lastgoodmigration 20200210 _badmigration 20200210 _badmigrationagain

如果您已经像问题中那样将迁移应用到db

运行: Update-Database -Migration <Last_Good_Migration_Name> 注:名称不能有日期前缀。例如:Update-Database -Migration LastGoodMigration 然后删除坏迁移运行: Remove-Migration 注意:因为我们有两次糟糕的迁移,所以运行两次Remove Migration命令。

如果您还没有将迁移应用到db

运行:

Remove-Migration

在本例中,运行两次Remove Migration命令。

希望这能帮助到一些人。

您应该从“_efmigrationhistory”表中删除迁移'20160703192724_MyFirstMigration'记录。

否则,下面的命令将删除迁移和删除迁移文件夹:

PMC命令:

   > remove-migration -force

CLI命令:

   > dotnet ef migrations remove -f

CLI命令链接

关于PMC命令

您仍然可以使用Update-Database命令。

Update-Database -Migration <migration name> -Context <context name>

然而,根据迁移的名称判断,我假设这是第一次迁移,因此该命令可能不起作用。您应该能够从数据库中的__MigrationHistory表中删除该条目,然后再次运行Remove-Migration命令。您还可以删除迁移文件并重新开始。