代码之家  ›  专栏  ›  技术社区  ›  Dimitri

实体框架实现代码优先迁移并防止数据丢失

  •  1
  • Dimitri  · 技术社区  · 5 年前

    我想知道如果我想将迁移添加到项目中,应该遵循的最佳指南和考虑的事项是什么,并注意项目:

    • 是活动的(开发/登台/生产环境)
    • 实时版本的模型已更改,某些字段/表 删除/添加
    • 由azure应用服务托管(发布设置)
    • 是一个MVC项目,实体框架6首先使用代码

    我知道 the basics of adding/using migrations 但就是这样。 我想知道如何实现迁移到我的解决方案,发布新项目(更改模型)。 不丢失任何数据

    这是可能的吗?有人能建议我看一下这类设置的解释吗?

    编辑 我正在测试这个开发,但我不能让它工作,没有我的数据库重新创建,从而失去现有的数据…

    我的配置文件:

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

    亲切问候

    1 回复  |  直到 5 年前
        1
  •  1
  •   Steve Greene    5 年前

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

    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中,所以克里斯可以解释这些迁移到单个迁移中。 here .

    推荐文章