【问题标题】:Entity Framework Code First Database Migrations - Multple instances of APP with Single DB Server实体框架代码优先数据库迁移 - 具有单个数据库服务器的 APP 的多个实例
【发布时间】:2020-08-10 04:36:03
【问题描述】:

所以从

的开发/部署方法过渡
  • 在源代码管理下拥有数据库,并拥有特定版本的数据库的部署管道
  • 在源代码控制下拥有 Web 应用程序/API,并为这些提供部署管道;

然后在 DB 版本上有 Web APP/API 的依赖关系——因此要添加新的 DB 更改,例如,我们必须进行 DB 发布;在我们发布应用程序之前 - 数据库更改必须不“破坏”旧应用程序 - 然后我们可以升级应用程序以使用新的数据库更改

虽然很痛苦 - 这很有效;当您有 N 个用于 Web 应用程序的服务器(水平比例)和适当的 SINGLE DB 服务器时,它也可以工作。

现在正在使用数据迁移实现 EF Core 3.1 Code First。所有工作都按预期工作,一个具有单个数据库的单个 Web 应用程序。

但是 - 如果这被部署到 N 个 Web 服务器,再次使用单个数据库实例;然后.....

  • “如果”网络服务器一次升级一个,然后数据迁移将在第一个“新”应用程序启动时发生 - 并且可能旧的网络应用程序将继续工作(取决于更改)

以上不是我真正关心的问题;这是

  • 如果您同时部署在多个 Web 应用服务器上并且这些应用同时启动;那么我想数据迁移将同时尝试......这意味着其中一个必须失败。

所以:64,000 美元的问题 - 人们如何使用带有 EF Code First 数据迁移的单数据库服务器来处理 Web 应用程序的横向扩展?

是“小心你的改变”吗?

【问题讨论】:

    标签: entity-framework .net-core ef-code-first database-migration


    【解决方案1】:

    人们如何使用带有 EF Code First 数据迁移的单数据库服务器来处理 Web 应用程序的横向扩展?

    Applying migrations at runtime 仅适用于开发和简单的生产部署。

    这里最常见的模式是生成数据库更改脚本(可能使用迁移,也可能使用像 SQL Server Data Tools 这样的面向数据库的工具),检查更改的向后兼容性和在线应用能力,然后部署它们第一的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-04
      • 2015-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      相关资源
      最近更新 更多