开发和生产环境之间的不同步迁移

时间:2015-05-22 12:56:38

标签: c# entity-framework

我想知道将生产环境与开发环境同步的最佳方法是什么。在正常情况下"迁移工作时,删除开发数据库并根据迁移重新创建数据库并不是什么大不了的事。然而,经常发生迁移被破坏(我的意思是SQL语句非常混乱)并且修复它们需要更多的努力,而不是简单地从头开始(删除数据库而且还有迁移)。

这个场景让我很困惑,因为我想知道如何让开发环境与生产环境保持同步。

方案

数据库/代码[模型版本]

第1天

开发

数据库1 |代码1 |迁移1

生产

数据库1 |代码1 |迁移1

第2天

开发

数据库4 |代码4 |迁移1< - > 2 - < - > 3 - < - > 4

生产

数据库1 |代码1 |迁移1

然后无论出于何种原因,你做了很多改动,从4迁移到例如10会产生一个非常混乱的迁移类,所以为了避免花一天时间,你从头开始。因此:

第3天

开发

数据库10 |代码10 |迁移1(从头开始)

生产

数据库1 |代码1 |迁移1

1)你到底要如何将项目发布到生产环境?我不知道如果你这样做会发生什么,但我想异常页面会很快显示出来。所以我的第一个问题是管理这种情况的最佳方法是什么?

2)在开发环境中,您应该能够经常重新创建数据库以避免浪费时间。您是否认为将迁移课程视为一等公民,并考虑花一天时间来修复迁移课程并不会导致时间浪费?#34;是一种更好的方法吗?

3)如果1)的答案概述了同步生产和开发环境之间的迁移并不像看起来那么痛苦,我有一种感觉,对于只翻滚而且不会回滚的团队,几个星期后摆脱旧的移民课程是好的。你看到了陷阱吗?

我认为对部署过程充满信心是至关重要的,因为现在它很好我只有一些关于生产的数据,我可以手动重新插入,以防我真的需要从头开始,但我没有'我希望处于这样一种情况:每次部署都是痛苦的(大量迁移脚本要大规模纠正)或压力很大。

1 个答案:

答案 0 :(得分:1)

我会撤消使用的迁移 Update-Database -TargetMigration回到应用迁移之前的状态,我并不想要。 More info here

回滚后,只需从Migrations文件夹中删除迁移即可。它会像它从未存在过一样。

因此,要回到生产中的状态,只需使用-TargetMigration进行当前在Production上运行的迁移,然后删除之后的所有迁移,然后重新开始。< / p>

下次执行Add-Migration时,它会为您重新调整更改。