c# - 使用 --force 删除应用的迁移
问题描述
我是 Entity Framework Core 的新手,只是一个关于使用 --force 删除应用迁移的问题,因为我对 shell 窗口中的显示消息感到困惑。
所以假设我创建了一个具有一些属性的类。然后我添加一个新属性,然后添加一个迁移并更新到这个迁移,以便数据库中的表有一个新列。然后我删除了这个已经应用的迁移
dotnet ef 迁移删除 --force
并且显示消息是这样的:
在不检查数据库的情况下删除迁移“_AddNewProperty”。如果此迁移已应用于数据库,您将需要手动撤消它所做的更改。删除迁移“_AddNewProperty”。还原模型快照。
所以没有检查数据库的关键字似乎表明只删除了migration.cs文件,EF不会费心对数据库中的表进行任何更改(通过调用已删除迁移的Down()方法降级到先前的迁移状态)并且您将需要手动反转它所做的更改,这表明我需要自己删除表中的新列。
但是在我删除了应用的迁移之后,数据库中的基础表也得到了更新(EF自动删除了新列),那么“不检查数据库”和“手动反转它所做的更改”到底是什么意思?
解决方案
好的,所以您发布的消息存在于 EF Core 2.0 中,您可以在此处查看(名称 =“ForceRemoveMigration”)。如果您将分支更改为 release/2.1 和更新版本,您会注意到消息已更改为
无法检查迁移“{name}”是否已应用于数据库。如果有,您将需要手动撤消所做的更改。检查时遇到错误:{error}
所以我认为这个信息是误导性的,最终改变了。
推荐阅读
- ip - Apache Ignite 的合理多播地址是什么?
- powershell - 使用 Powershell 将项目符号点格式化为 Outlook 正文
- c# - 在网格外的控件中显示大型历史字段
- python - 熊猫计算每一行与前行的总和
- windows - 如何使用批处理文件将多个文件夹压缩成一个 rar 存档文件?
- python - Python:用 ssh 连接替换 shell 管道
- sql - 有 17 个子查询 case 语句,有更好的方法吗?
- javascript - 带有 MVC5 AjaxBeginForm 的 Jquery Noty 插件
- mysql - 如何在另一个api的基础上管理第一个api的回滚事务
- java - Akka Streams 丢弃消息?