团队环境中的迁移

在团队环境中使用迁移时,请特别注意模型快照文件。 团队成员可通过该文件判断迁移是否与迁移完全合并,或者是否需要在共享迁移之前通过重新创建迁移来解决冲突。

合并

当合并来自团队成员的迁移时,模型快照文件中可能会发生冲突。 如果这两个更改不相关,则合并十分简单,并且两个迁移可以共存。 例如,可能会在客户实体类型配置中遇到合并冲突,如下所示:

<<<<<<< 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

如果遇到此类冲突,请通过重新创建迁移来解决该问题。 执行以下步骤:

  1. 先中止合并并回滚到工作目录,然后再进行合并
  2. 删除迁移(但保留模型更改)
  3. 将队友的更改合并到工作目录中
  4. 重新添加迁移

在这样做之后,可以按正确顺序应用这两个迁移。 首先应用他们的迁移,将列重命名为“别名”,然后迁移将其重命名为“用户名”

你的迁移可以安全地与团队的其他成员共享。