EntityFramework核心生产迁移

时间:2019-07-12 04:41:53

标签: ef-code-first entity-framework-core ef-migrations

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

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

我是否每次必须临时覆盖通常指定我的数据库本地dev副本的连接字符串?好像是这样,但是对我来说似乎也很麻烦,所以我想知道我是否缺少某些东西。

1 个答案:

答案 0 :(得分:1)

自动迁移的含义似乎有些混乱。

迁移由两部分组成:

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

迁移生成可能有两种类型:

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

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

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

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

dbContext.Database.Migrate();

有关更多信息,请参阅MigrationsApply migrations at runtime EF Core文档主题。