在不同的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?