チーム環境での移行Migrations in Team Environments

チーム環境で移行を使用する場合、モデルのスナップショット ファイルに余分な注意してください。When working with Migrations in team environments, pay extra attention to the model snapshot file. このファイルは、あなたのチームメイトの移行が正常にマージされた場合、または共有する前に、移行を再作成して競合を解決する必要がある場合は通知します。This file can tell you if your teammate's migration merges cleanly with yours or if you need to resolve a conflict by re-creating your migration before sharing it.

マージMerging

他のチーム メンバーからの移行をマージすると、モデルのスナップショット ファイルの競合を取得可能性があります。When you merge migrations from your teammates, you may get conflicts in your model snapshot file. 両方の変更が関連する場合は、マージは簡単ですし、2 つの移行に共存させることができます。If both changes are unrelated, the merge is trivial and the two migrations can coexist. たとえば、次のような customer エンティティ型の構成でマージ競合を取得可能性があります。For example, you may get a merge conflict in the customer entity type configuration that looks like this:

<<<<<<< Mine
b.Property<bool>("Deactivated");
=======
b.Property<int>("LoyaltyPoints");
>>>>>>> Theirs

これらのプロパティは、最終的なモデルに存在する必要があるために、両方のプロパティを追加することで、マージを完了します。Since both of these properties need to exist in the final model, complete the merge by adding both properties. 多くの場合、バージョン コントロール システムがこのような変更を自動的にマージ可能性があります。In many cases, your version control system may automatically merge such changes for you.

b.Property<bool>("Deactivated");
b.Property<int>("LoyaltyPoints");

このような場合は、チームメイトの移行と移行は相互に依存しません。In these cases, your migration and your teammate's migration are independent of each other. 最初にそれらのいずれかの適用でした後、は、チームと共有する前に、移行を追加、変更する必要はありません。Since either of them could be applied first, you don't need to make any additional changes to your migration before sharing it with your team.

競合の解決Resolving conflicts

場合がありますモデルのスナップショットをマージするときに競合が発生します。Sometimes you encounter a true conflict when merging the model snapshot model. たとえば、チームメイトとする可能性がありますそれぞれ名前が変更、同じプロパティ。For example, you and your teammate may each have renamed the same property.

<<<<<<< Mine
b.Property<string>("Username");
=======
b.Property<string>("Alias");
>>>>>>> Theirs

この種の競合が発生した場合は、移行を再作成して解決します。If you encounter this kind of conflict, resolve it by re-creating your migration. この場合は、以下の手順に従ってください。Follow these steps:

  1. マージ変換およびマージする前に、作業ディレクトリへのロールバックを中止します。Abort the merge and rollback to your working directory before the merge
  2. 移行を削除する (ただし、モデルの変更を保持)Remove your migration (but keep your model changes)
  3. 自分の作業ディレクトリにチームメイトが変更をマージします。Merge your teammate's changes into your working directory
  4. 移行をもう一度追加します。Re-add your migration

その後で、正しい順序で 2 つの移行を適用できます。After doing this, the two migrations can be applied in the correct order. 移行が最初に、適用されると、列の名前を変更するエイリアス、移行の名前を変更して、その後UsernameTheir migration is applied first, renaming the column to Alias, thereafter your migration renames it to Username.

移行は、チームの残りの部分と安全に共有できます。Your migration can safely be shared with the rest of the team.