团队环境中的迁移
在团队环境中使用迁移时,请特别注意模型快照文件。 团队成员可通过该文件判断迁移是否与迁移完全合并,或者是否需要在共享迁移之前通过重新创建迁移来解决冲突。
合并
当合并来自团队成员的迁移时,模型快照文件中可能会发生冲突。 如果这两个更改不相关,则合并十分简单,并且两个迁移可以共存。 例如,可能会在客户实体类型配置中遇到合并冲突,如下所示:
<<<<<<< Mine
b.Property<bool>("Deactivated");
=======
b.Property<int>("LoyaltyPoints");
>>>>>>> Theirs
由于最终模型中都需要有这两个属性,因此通过添加这两个属性来完成合并。 在许多情况下,版本控制系统可能会自动合并此类更改。
b.Property<bool>("Deactivated");
b.Property<int>("LoyaltyPoints");
在这些情况下,你的迁移和团队成员的迁移互不相干。 由于可以先应用其中一个迁移,因此在与团队共享迁移之前,无需对迁移进行任何其他更改。
解决冲突
有时,在合并模型快照模型时会遇到真正的冲突。 例如,你和你的队友可能各自重命名了同一属性。
<<<<<<< Mine
b.Property<string>("Username");
=======
b.Property<string>("Alias");
>>>>>>> Theirs
如果遇到此类冲突,请通过重新创建迁移来解决该问题。 执行以下步骤:
- 先中止合并并回滚到工作目录,然后再进行合并
- 删除迁移(但保留模型更改)
- 将队友的更改合并到工作目录中
- 重新添加迁移
在这样做之后,可以按正确顺序应用这两个迁移。 首先应用他们的迁移,将列重命名为“别名”,然后迁移将其重命名为“用户名”。
你的迁移可以安全地与团队的其他成员共享。