ef-code-first - EntityFramework Core 生产迁移
问题描述
如何更新数据库以进行生产?我已将连接字符串机密移出应用程序。我们的 CI/CD 管道处理保留在 appsettings 中的连接字符串“模板”中的令牌替换,开发人员将无法访问生产数据库。
我曾期望使用自动迁移,但今天发现微软为 EF Core 取消了它。
我每次都必须临时覆盖通常指定我的本地开发数据库副本的连接字符串吗?看起来是这样,但对我来说,这似乎也是一个非常糟糕的过程,所以我想知道我是否遗漏了一些东西。
解决方案
似乎对自动迁移的含义感到困惑。
迁移包括两部分:
- 从模型生成
- 应用于数据库。
反过来,迁移生成可能有两种类型:
- 自动 - 在运行时,将当前模型与上次迁移生成的模型进行比较,如果有变化,它会生成自动迁移代码。
Add-Migration
手动 - 使用设计时工具(命令)在设计时生成迁移。可以修改自动生成的代码。无论是否修改,迁移与应用程序代码一起存储。
无论迁移是如何生成的,它们都可以在设计时使用工具(Update-Database
命令)和/或在运行时应用。
EF6 支持和 EF Core 删除的是自动生成. EF Core 迁移不能在运行时生成 - 它们必须在设计时生成并与应用程序代码一起存储。
在运行时应用它们是通过Migrate
从某个应用程序启动点调用的方法来实现的:
dbContext.Database.Migrate();
推荐阅读
- r - 检查R中是否存在URL
- angular - Angular 6 Material - 无法读取未定义的属性“navigateByUrl”
- android - 如果不使用 PRO 帐户时使用 Webview,我可以在 android native 上使用 Vimeo 原生视频流吗?
- ios - UIView 切出任意数量的透明孔
- java - 我在 JTabbedPane 外部的框架内收到 JButton 的“错误:找不到符号”
- java - 无法启动活动 ComponentInfo:尝试在空对象引用上调用虚拟方法
- numpy - 通过重复的函数调用将数组附加到自身
- java - 如何在子类中正确调用超类的构造函数?
- python - NLTK Tokenizer 的算法复杂度
- statsmodels - 使用 statsmodels.formula.api 中的 ols 只有一个常数项?