如何使用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
命令。 您也可以删除迁移文件,然后重新开始。
在已经应用到数据库之后,最“近”的迁移是“不应用”:
- 打开SQL Server对象资源pipe理器(查看 – >“SQL Server对象资源pipe理器”)
- 通过将小三angular形展开到一侧,导航到链接到项目的数据库。
- 展开“表格”
- find名为“dbo._EFMigrationsHistory”的表。
- 右键单击它并select“查看数据”以查看Visual Studio中的表条目。
- 删除与您不想应用的迁移相对应的行(如果提示,请在“警告”中input“yes”)。
- 在具有project.json文件的目录中的命令窗口中再次运行“dotnet ef migrations remove”。 或者,在软件包pipe理器控制台中运行“Remove-Migration”命令。
希望这有助于并适用于项目中的任何迁移…我仅对最近的迁移进行了testing…
快乐的编码!
要根据文档删除上次执行的迁移,请使用以下命令:
dotnet ef migrations remove
应该从解决scheme目录中的开发人员命令提示符( 如何打开命令提示符 )执行此命令。
例如,如果您的应用程序名称为“Application”,并位于文件夹c:\ Projects中。 那么你的path应该是:
C:\Projects\Application
- .NET核心与单声道
- 您必须添加对程序集mscorlib的引用,version = 4.0.0
- 如果(false == true)在抛出exception的时候执行block
- .NET核心中没有AppDomain! 为什么?
- 项目的默认XML名称空间必须是MSBuild XML名称空间
- 找不到与命令“dotnet-aspnet-codegenerator”匹配的可执行文件
- 如何确定是否安装了.netcore
- 我可以在单个解决scheme中共享DNX / ASP.NET 5项目(project.json / xproj)和其他C#项目(csproj)之间的代码吗?
- 安装Dot Net Core 1.0.0 VS 2015工具预览版的问题2