如何使用EF Core在ASP.NET Core中取消应用迁移

当我使用EF Core在VS2015中运行PM> Remove-Migration -context BloggingContext ,出现以下错误:

 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 Update 3。

使用dotnet ef database update <previous-migration-name>

然后尝试删除最后的迁移。

在没有数据库更新的情况下删除迁移不起作用,因为您将更改应用于数据

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

 dotnet ef database update 0 dotnet ef migrations remove 

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

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

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

在已经应用到数据库之后,最“近”的迁移是“不应用”:

  1. 打开SQL Server对象资源pipe理器(查看 – >“SQL Server对象资源pipe理器”)
  2. 通过将小三angular形展开到一侧,导航到链接到项目的数据库。
  3. 展开“表格”
  4. find名为“dbo._EFMigrationsHistory”的表。
  5. 右键单击它并select“查看数据”以查看Visual Studio中的表条目。
  6. 删除与您不想应用的迁移相对应的行(如果提示,请在“警告”中input“yes”)。
  7. 在具有project.json文件的目录中的命令窗口中再次运行“dotnet ef migrations remove”。 或者,在软件包pipe理器控制台中运行“Remove-Migration”命令。

希望这有助于并适用于项目中的任何迁移…我仅对最近的迁移进行了testing…

快乐的编码!

要根据文档删除上次执行的迁移,请使用以下命令:

 dotnet ef migrations remove 

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

例如,如果您的应用程序名称为“Application”,并位于文件夹c:\ Projects中。 那么你的path应该是:

 C:\Projects\Application