首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个实例的实体框架迁移策略

多个实例的实体框架迁移策略
EN

Stack Overflow用户
提问于 2019-02-13 12:34:47
回答 1查看 3.2K关注 0票数 9

我有一个.NET核心应用程序,我正在运行的AWS弹性容器服务(ECS)。-应用程序运行在两个不同的实例上。-数据库是SQL服务器

该应用程序在启动时运行数据库迁移,运行非常好。但是我不得不迁移大量的数据,这意味着迁移需要更长的时间。这导致了数据的重复移动。

之所以会发生这种情况,是因为两个应用程序都首先检查数据库是否执行了迁移,然后都发现没有执行,然后都开始运行迁移,这需要时间。完成之后,它将迁移添加到数据库中。

人们是如何解决这个问题的?

可能的解决方案我和其他人已经想到了

  1. 从应用程序的一个实例开始,然后进行扩展。这是可行的,但是每次迁移时,我都必须手动缩小和向上缩放。(这是可以自动完成的,但需要时间)
  2. 在事务中包装长期运行的迁移,并在开始时设置迁移,就像在数据库中所做的那样。在执行更改之前,请检查它是否在数据库中。如果事务失败,请从数据库中移除迁移。
  3. 锁定数据库?迁移过程中EF核心锁定数据库。看上去很奇怪。
  4. 将迁移作为部署过程的一部分。这似乎是最佳实践,但这意味着构建服务器需要知道数据库机密。我不害怕给它,但这意味着我将不得不保持一个重复的一套。

外面的人是做什么的?我错过了什么明显的解决方案吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-13 16:29:28

我们以前也让应用程序执行迁移,但即使是在多实例环境中的Microsoft 建议避免这种情况

我们建议生产应用程序不应在应用程序启动时调用Database.Migrate。不应该从服务器场中的应用程序调用迁移。例如,如果应用程序已经部署到云端,则使用扩展(应用程序的多个实例正在运行)。 数据库迁移应该作为部署的一部分,并以一种受控的方式进行。

就像每件事一样,解决问题也有不同的方法。我们的团队很小,所以我们通过EF工具生成迁移脚本,然后作为部署/维护例程的一部分手动运行它们。当然,如果您的流程值得的话,这是可以自动化的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54670329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档