【问题标题】:remove applied migrations with --force使用 --force 删除应用的迁移
【发布时间】:2019-12-29 12:12:28
【问题描述】:

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

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

dotnet ef 迁移删除 --force

显示信息是这样的:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    好的,所以您发布的消息存在于 EF Core 2.0 中,您可以检查它here (name = "ForceRemoveMigration")。如果您将分支更改为 release/2.1 及更新版本,您会注意到消息已更改为

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

    所以我认为该信息具有误导性并最终改变了。

    【讨论】:

    • 感谢您的回答。但是新消息仍然说您需要手动撤消所做的更改,但 EF 实际上会自动撤消更改
    • 查看branch release/2.0 中的同一个文件,我们可以看到每次设置“force”时都会出现ForceRemoveMigration
    • 所以你的意思是如果我使用2.1版本,并使用--force,如果一切正常,没有任何异常,不会有任何消息,我今天回家试试
    • @secondimage 是的,这就是它应该在 ef core 2.1 和更新版本上工作的方式
    猜你喜欢
    • 1970-01-01
    • 2015-04-08
    • 2020-01-20
    • 1970-01-01
    • 2011-10-29
    • 2022-01-01
    • 2017-02-23
    • 2016-04-02
    • 2017-03-26
    相关资源
    最近更新 更多