チーム環境での移行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 of 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. たとえば、次のような顧客エンティティ型構成にマージの競合を取得することがあります。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

場合もありますが発生する場合は true。 競合モデルのスナップショットをマージする場合。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. 移行は、最初に適用する列の名前を変更するエイリアス、その後、移行の名前を変更してUsernameです。Their 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.