在不同的TFS分支上工作时丢失EF代码首次迁移?

我们正在使用TFS并为我们的开发者提供不同的分支。

  • 在分支A中,我们进行了迁移以更改列大小

  • 在分支B中,我们进行了迁移以添加一个新表。 这个分支不知道分支A的修改!

  • 两个修改都合并到主分支。

  • 当我执行更新数据库时,它执行2次迁移,但最终告诉我有未决的更改。 如果我进行了Add-Migration,它会创建与第一次迁移相同的结果(在分支A中)。

    无法更新数据库以匹配当前模型,因为有未决的更改并且自动迁移已禁用。 将挂起的模型更改写入基于代码的迁移或启用自动迁移。 将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true以启用自动迁移。 您可以使用“添加迁移”命令将挂起的模型更改写入基于代码的迁移。

    是否因为我最后一次迁移的属性Target de IMigrationMetadata的内容中缺少某些内容,因为它不知道第一个迁移的内容?

    是否有可能在不同的TFS分支中处理迁移?


    EF迁移步骤包含一个元数据文件,该文件具有作为迁移步骤结果的模型签名。 合并时的问题是,在分支B中完成的迁移的签名不包括在分支A中的迁移中完成的内容。只要迁移在分支中,这就是正确的。 合并时会出错。

    为了补救它,你必须重新生成后期迁移的元数据

    add-migration MyMigrationName
    

    在没有-force参数的情况下在现有add-migration上运行add-migration将仅重新生成元数据。

    我在博客中深入介绍了EF迁移和合并冲突帖子中的合并方案。


    作为Anders Abel的答案的补充,对于那些在尝试重新生成上次迁移元数据时遇到问题的人,这会导致EF创建一个附加1的单独迁移。

    您必须包含完整的日期/时间戳。

    例如

    如果您以前的迁移的文件名是201701011322_MakeChangesToPotatoTable

    然后,您必须在“添加迁移”命令中正确包含完整名称。

    IE

    Add-Migration 201701011322_MakeChangesToPotatoTable
    
    链接地址: http://www.djcxy.com/p/90247.html

    上一篇: Lose EF Code First Migration when working on different TFS branches?

    下一篇: model updated with [Required] attributes