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

标签 c# entity-framework

我想知道让生产环境与开发环境同步的最佳方法是什么。在迁移工作的“正常情况”下,删除开发数据库并根据您拥有的迁移重新创建它并不是什么大问题。然而,经常发生迁移被破坏(我的意思是 SQL 语句非常非常困惑)并且修复它们需要更多的努力,而不是简单地从头开始一切(删除数据库和迁移)。

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

场景

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


第 1 天

发展

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

制作

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


第二天

发展

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

制作

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

然后无论出于何种原因,您进行了大量更改,例如从 4 迁移到 10 会生成一个非常困惑的迁移类,因此为了避免花费 1 天时间,您需要从头开始。因此:


第 3 天

发展

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

制作

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


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

2) 对我而言,在开发环境中,您应该能够经常重新创建数据库以避免浪费时间。您认为将迁移类视为一等公民并考虑花 1 天时间修复迁移类不是“浪费时间”是更好的方法吗?

3) 如果 1) 的答案概述了同步回生产环境和开发环境之间的迁移并不像看起来那么痛苦,我觉得对于只回滚而不回滚的团队来说,摆脱几周后的旧迁移类就可以了。你看到这里有陷阱吗?

我认为对部署过程充满信心是关键,现在没关系我只有一些生产数据可以手动重新插入以防万一我真的需要从头开始但我不想陷入困境每次部署都很痛苦(大量迁移脚本需要大量纠正)或压力很大的情况。

最佳答案

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

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

所以回到它在生产环境中的情况,只需使用 -TargetMigration 到当前在生产环境中运行的迁移,然后删除所有在它之后的迁移,然后重新开始。

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

关于c# - 开发环境和生产环境之间的不同步迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30397328/

相关文章:

c# - 安全地引发事件线程 - 最佳实践

.net - TransactionScope一直在努力提升到MSDTC

mysql - EF ObjectContext 中的批量插入性能问题

c# - C#中作为静态多态的方法重载

c# - 字典是否可以将数组作为键?

c# - 在给定时间后等待并终止线程而不阻塞.NET 3.5

entity-framework - 连接到 Azure SQL 数据仓库数据库时出现 "Unknown property PrimaryFilePath"错误

c# - Entity Framework Sqlite 数据库 : NotSupportedException

c# - Authorize 和 GetRoles 在 ASP.NET Identity 中不起作用

c# - 在 Xamarin Studio 中打开 Visual Studio 项目时出现 "Version string portion was too short or too long"