首页 > 解决方案 > EntityFramework Core 生产迁移

问题描述

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

我曾期望使用自动迁移,但今天发现微软为 EF Core 取消了它。

我每次都必须临时覆盖通常指定我的本地开发数据库副本的连接字符串吗?看起来是这样,但对我来说,这似乎也是一个非常糟糕的过程,所以我想知道我是否遗漏了一些东西。

标签: ef-code-firstentity-framework-coreentity-framework-migrations

解决方案


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

迁移包括两部分:

  1. 从模型生成
  2. 应用于数据库。

反过来,迁移生成可能有两种类型:

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

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

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

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

dbContext.Database.Migrate();

有关详细信息,请参阅迁移在运行时应用迁移EF Core 文档主题。


推荐阅读