首页 > 解决方案 > 实体框架实现代码优先迁移并防止数据丢失

问题描述

如果我想将迁移添加到项目并注意该项目,我想知道什么是最好的指南以及要考虑的事项:

我知道添加/使用迁移的基础知识,仅此而已。我想知道如何实现对我的解决方案的迁移,发布新项目(更改模型)而不丢失任何数据

这是可能的吗?任何人都可以向我建议任何可以很好地解释这种设置的东西吗?

编辑 我正在开发中对此进行测试,但如果不重新创建我的数据库,我就无法使其工作,因此会丢失现有数据......

我的配置文件:

public Configuration()
{
    AutomaticMigrationsEnabled = true; // tried false as well
    ContextKey = "ContractCare.Models.ApplicationDbContext";
    AutomaticMigrationDataLossAllowed = false;
}

亲切的问候

标签: model-view-controllerentity-framework-6entity-framework-migrationsdata-loss

解决方案


将空快照迁移添加到您的 DEV 环境。这将捕获该模型的当前状态:

enable-migrations
Add-Migration InitialBaseline –IgnoreChanges  // Tells EF not generate Up() code of existing objects
update-database

现在,DEV 中的所有后续更改都可以通过更改连接字符串并重新运行或通过生成可以在这些服务器上运行的脚本来部署到其他环境update-database -Script

在此之前,您必须使用已有的流程将其他环境“赶上”到 DEV 状态。然后将InitialBaseline迁移应用到这些环境。

展望未来,您可以将 DEV 迁移应用到 UAT、STG 并最终应用到 PROD。由于在 DEV 中往往会发生大量迁移,因此您可以将它们汇总到一个迁移中,正如 Chris在此处解释的那样。


推荐阅读