更新 ContextModelSnapshot EF Core

Cor*_*y P 25 entity-framework-core asp.net-core-mvc

我是 EF Core 的新手,所以如果有一个微不足道的答案,请原谅我。

拿这个场景......

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

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

小智 32

你可以执行命令

Add-migration temporary

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

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

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

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

即使迁移已被删除,它也会恢复模型快照。这种方法非常适用于 Ef 核心 2.2.0-rtm-35687

  • 使用“Add-Migration MyName”为其命名。名称并不重要,因为Remove-Migration 将删除该文件。 (4认同)
  • 至少在最新版本的 EF Core 中,Remove-Migration 没有任何争论。 (4认同)
  • 从数据库重新创建快照的方式非常出乎意料,但有效 (3认同)