我想知道如果我想将迁移添加到项目并注意该项目,最好遵循的指南是什么以及需要考虑的事项:
- 已上线(开发/登台/生产环境)
- 实时版本的模型已更改,某些字段/表格已更改 删除/添加
- 由 Azure 应用服务托管(发布设置)
- 是使用代码优先的 Entity Framework 6 的 MVC 项目
我知道the basics of adding/using migrations但仅此而已。 我想知道如何实现对我的解决方案的迁移,发布新项目(更改后的模型)而不丢失任何数据。
这可能吗?有人可以建议我看一些对这种设置有很好解释的东西吗?
编辑 我正在开发中对此进行测试,但如果不重新创建数据库,我就无法使其工作,因此会丢失现有数据......
我的配置文件:
public Configuration()
{
AutomaticMigrationsEnabled = true; // tried false as well
ContextKey = "ContractCare.Models.ApplicationDbContext";
AutomaticMigrationDataLossAllowed = false;
}
亲切的问候
最佳答案
将空快照迁移添加到您的 DEV 环境。这将捕获该模型的当前状态:
enable-migrations
Add-Migration InitialBaseline –IgnoreChanges // Tells EF not generate Up() code of existing objects
update-database
现在,DEV 中的所有后续更改都可以通过更改连接字符串并重新运行或生成可在这些服务器上运行的脚本来部署到其他环境update-database -Script
。
在此之前,您必须使用已有的流程将其他环境“ catch ”DEV 状态。然后,将 InitialBaseline
迁移应用到这些环境。
接下来,您可以将 DEV 迁移应用到 UAT、STG 以及最终的 PROD。由于大量迁移往往发生在 DEV 中,因此您可以将这些迁移汇总为单个迁移,如 Chris 所解释的 here .
关于model-view-controller - Entity Framework 实现代码优先迁移并防止数据丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53846938/