EntityFramework 核心生产迁移

EntityFramework Core production migrations

如何更新生产数据库?我已将连接字符串机密移出应用程序。我们的 CI/CD 管道处理保留在应用程序设置中的连接字符串 "template" 中的令牌替换,开发人员将无法访问生产数据库。

我曾期望使用自动迁移,但今天才发现 Microsoft 取消了 EF Core 的自动迁移。

我是否必须每次都临时覆盖通常指定数据库的本地开发副本的连接字符串?似乎是这样,但对我来说它也似乎很糟糕,所以我想知道我是否遗漏了什么。

似乎对自动迁移的含义感到困惑。

迁移由两部分组成:

  1. 从模型生成
  2. 正在申请数据库。

迁移生成依次有两种类型:

  • 自动 - 在运行时,将当前模型与上次迁移生成的模型进行比较,如果有变化,它会生成一个自动迁移代码。
  • 手动 - 使用设计时工具(Add-Migration 命令)在设计时生成迁移。 auto-generated代码可以修改。修改与否,迁移与应用程序代码一起存储。

无论迁移是如何生成的,它们都可以在设计时使用工具(Update-Database命令)应用and/or 在运行时。

EF6 支持和 EF Core 删除的是 auto-generation。 EF Core 迁移无法在运行时生成 - 它们必须在设计时生成并与应用程序代码一起存储。

在运行时应用它们是通过从某个应用程序启动点调用的 Migrate 方法实现的:

dbContext.Database.Migrate();

有关详细信息,请参阅 Migrations and Apply migrations at runtime EF Core 文档主题。