重新部署旧版应用程序数据库的策略

Bud*_*ode 7 c# continuous-integration entity-framework continuous-deployment ef-migrations

我们有一个使用ASP.NET MVC,C#和MySQL编写的Web应用程序,并使用Entity Framework 6作为ORM.

我们正在使用Entity Framework的CodeFirst迁移来控制数据库随时间和从发布到发布的更改.

我们使用Jenkins建立持续集成/部署流程来创建构建工件(存档文件),该构建工件上传到AWS S3,并从那里组合Lambda函数和AWS的CodeDeploy负责将应用程序部署到各种EC2实例.

每个EF Migration都有Up()和Down()方法,允许特定的迁移文件为应用程序代码的特定版本升级和降级数据库.

最近出现的一件事我们没有明确的答案:

如果要重新部署以前版本的应用程序,如何管理数据库的"降级"?

由于应用程序版本(以及代码)较旧,因此任何新的EF迁移文件都不会包含在其中,因此,没有Down()方法可以将数据库恢复到之前的状态,因为Down()方法是所有这些都包含在后来的EF迁移中,现在不再是(旧版本)应用程序代码的一部分.

我们通常不会恢复到我们应用程序的旧版本,但如果我们遇到无法预料的问题,我们可能偶尔会这样做,而且我确信其他人必须处理已升级的数据库的有效回滚/降级通过更新版本的应用程序.

有没有人有任何好的策略来处理数据库回滚/降级,理想情况是以最自动化的方式,理想情况下,使用与旧版本完全相同的先前构建工件(即,无需完全"重建"旧版本)?

Jus*_*ohn -1

这是一个很长的尝试,但您是否尝试过仅更改连接字符串?听起来太简单了,不太真实,但如果表是相同的。。。。