【问题标题】:EntityFramework Core production migrationsEntityFramework Core 生产迁移
【发布时间】:2019-11-21 19:51:32
【问题描述】:

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

我原以为会使用自动迁移,但今天发现微软为 EF Core 取消了它。

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

【问题讨论】:

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


    【解决方案1】:

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

    迁移由两部分组成:

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

    迁移生成又可以是两种类型:

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

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

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

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

    dbContext.Database.Migrate();
    

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

    【讨论】:

    • 啊。我认为自动迁移是指应用到数据库。我没有意识到它会在运行时自动创建迁移。我能够将app.ApplicationServices.GetService<ApplicationDbContext>().Database.Migrate(); 添加到我的Startup.Configure() 函数中,现在一切都很好。谢谢!
    猜你喜欢
    • 2021-06-04
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    相关资源
    最近更新 更多