チーム環境での移行

チーム環境で移行を行う場合は、モデルのスナップショット ファイルに特に注意を払います。 このファイルによって、チームメイトの移行がご自身のものと正常にマージされるかどうか、または共有前に移行を再作成して競合を解決する必要があるかどうかがわかります。

マージ

チームメイトから移行をマージする場合、モデルのスナップショット ファイルで競合が発生することがあります。 両方の変更が関連していない場合、マージは簡単であり、2 つの移行は共存できます。 たとえば、お客様のエンティティ型の構成で、次のようなマージの競合が発生する場合があります。

<<<<<<< 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. ご自身の移行をもう一度追加します

これを行った後に、2 つの移行を正しい順序で適用できます。 チームメイトの移行が最初に適用され、列の名前が Alias に変更されます。その後にご自身の移行でその名前が Username に変更されます。

ご自身の移行が、チームの他のメンバーと安全に共有できます。