首页 > 解决方案 > 使用 --force 删除应用的迁移

问题描述

我是 Entity Framework Core 的新手,只是一个关于使用 --force 删除应用迁移的问题,因为我对 shell 窗口中的显示消息感到困惑。

所以假设我创建了一个具有一些属性的类。然后我添加一个新属性,然后添加一个迁移并更新到这个迁移,以便数据库中的表有一个新列。然后我删除了这个已经应用的迁移

dotnet ef 迁移删除 --force

并且显示消息是这样的:

在不检查数据库的情况下删除迁移“_AddNewProperty”。如果此迁移已应用于数据库,您将需要手动撤消它所做的更改。删除迁移“_AddNewProperty”。还原模型快照。

所以没有检查数据库的关键字似乎表明只删除了migration.cs文件,EF不会费心对数据库中的表进行任何更改(通过调用已删除迁移的Down()方法降级到先前的迁移状态)并且您将需要手动反转它所做的更改,这表明我需要自己删除表中的新列。

但是在我删除了应用的迁移之后,数据库中的基础表也得到了更新(EF自动删除了新列),那么“不检查数据库”和“手动反转它所做的更改”到底是什么意思?

标签: c#entity-frameworkentity-framework-core

解决方案


好的,所以您发布的消息存在于 EF Core 2.0 中,您可以在此处查看(名称 =“ForceRemoveMigration”)。如果您将分支更改为 release/2.1 和更新版本,您会注意到消息已更改为

无法检查迁移“{name}”是否已应用于数据库。如果有,您将需要手动撤消所做的更改。检查时遇到错误:{error}

所以我认为这个信息是误导性的,最终改变了。


推荐阅读