【发布时间】:2018-04-23 20:41:29
【问题描述】:
我的公司正在转向微服务,作为这种转变的一部分,devops 正在使用 VSTS 和 GIT 在 Azure 中建立 CI/CD 构建发布管道。
当前管理迁移的模型是开发人员在 2 个独立的 git 存储库中获得 2 个项目。
项目 1 - API 服务项目 - .NET Framework / .Net Core
项目 2 - 使用迁移 API 的基于 EF6 的数据库项目
这些项目具有基于存储库的完全独立的发布管道。因此,当您在 master 中创建拉取请求时,管道会构建并发布项目。
这种新架构还支持蓝绿部署,我们的应用服务在多个节点上运行。
我们遇到的问题是,通过这种设置,我们基本上必须手动编写迁移代码,并且不能使用 EF Core 中提供的任何工具。
我读过的大多数文章和文档都显示了从应用启动时运行迁移,但是如果您有多个应用服务节点,如何防止 2 个节点运行迁移?
我看过的其他文章展示了将迁移移动到一个单独的项目中,但该项目需要引用包含 dbcontext 的项目。在我公司的设置中,这是不可能的。我们也不能反过来做,因为将 dbcontext 移动到数据库项目中会阻止我们在 api 服务项目中引用它。
有什么方法可以用 EF Core 支持这个模型?
在多节点应用服务上使用 EF Core 迁移实现蓝绿色部署的首选方法是什么?
【问题讨论】:
标签: entity-framework entity-framework-migrations ef-core-2.0