【问题标题】:Update ContextModelSnapshot EF Core更新 ContextModelSnapshot EF Core
【发布时间】:2018-05-04 18:33:49
【问题描述】:

我是 EF Core 的新手,所以如果有一个琐碎的答案,请原谅我。

以这种情况为例....

正在使用最新版本的 ASP.NET Core 开发新的 Web 应用程序,并采用代码优先的方法。在某些时候,由于删除或源代码控制,ContextModelSnapshot 与数据库不同步。我们无法删除数据库并重新创建它。

问题:如何将快照与数据库“重新同步”?

【问题讨论】:

    标签: asp.net-core-mvc entity-framework-core


    【解决方案1】:

    你可以执行命令

    Add-migration temporary

    创建一个新的空迁移。然后,运行

    Remove-Migration temporary(或他们的 dotnet-cli 对应)

    在最新版本的 EF Core (3+) 中,只需使用:

    Remove-Migration(将恢复上次迁移)

    即使迁移已被删除,它也会从头开始创建模型快照。这种方法非常适用于 Ef core 2.2.0-rtm-35687

    【讨论】:

    • 从数据库重新创建快照的非常出人意料的方法,但有效
    • 这不起作用,因为Add-Migration 不能在没有迁移名称的情况下运行。
    • 给它一个名字Add-Migration MyName 这个名字并不重要,因为Remove-Migration会移除这个文件。
    • Remove-Migration 不需要争论,至少在最近的 EF Core 版本中是这样。
    • 我对“它会还原模型快照”感到很困惑。 @m-artem 的意思是“它将从头开始重新创建它”吗?由于它不同步,我看不出它是如何“还原”的,所以我认为它是“重新创建的”。
    【解决方案2】:

    很简单,只需删除 ContextModelSnapshot 然后添加新的迁移

    【讨论】:

    • 这是不正确的。如果您删除 ContextModelSnapshot 并添加新迁移,则新迁移将包含先前迁移的所有指令(使新迁移与前迁移冗余 - 甚至冲突)
    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2019-02-06
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-18
    相关资源
    最近更新 更多