Migrações em ambientes de equipeMigrations in Team Environments

Ao trabalhar com migrações em ambientes de equipe, preste atenção extra ao arquivo de instantâneo do modelo.When working with Migrations in team environments, pay extra attention to the model snapshot file. Esse arquivo pode informar se a migração do seu colega de equipe mescla corretamente com o seu ou se você precisar resolver um conflito, recriando a migração antes de compartilhá-lo.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.

MesclandoMerging

Quando você mescla as migrações de seus colegas de equipe, você pode obter conflitos em seu arquivo de instantâneo do modelo.When you merge migrations from your teammates, you may get conflicts in your model snapshot file. Se ambas as alterações não estão relacionadas, a mesclagem é trivial e duas migrações podem coexistir.If both changes are unrelated, the merge is trivial and the two migrations can coexist. Por exemplo, você pode obter um conflito de mesclagem em que a configuração do tipo de entidade customer tem esta aparência: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

Uma vez que ambas as propriedades precisam existir no modelo final, conclua a mesclagem, adicionando ambas as propriedades.Since both of these properties need to exist in the final model, complete the merge by adding both properties. Em muitos casos, o sistema de controle de versão pode mesclar essas alterações automaticamente para você.In many cases, your version control system may automatically merge such changes for you.

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

Nesses casos, sua migração e a migração do seu colega de equipe são independentes uns dos outros.In these cases, your migration and your teammate's migration are independent of each other. Uma vez que qualquer um deles pode ser aplicado primeiro, você não precisa fazer nenhuma alteração adicional para a migração antes de compartilhá-lo com sua equipe.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.

A resolução de conflitosResolving conflicts

Às vezes, você encontrar um conflito de true ao mesclar o modelo de instantâneo do modelo.Sometimes you encounter a true conflict when merging the model snapshot model. Por exemplo, você e seu colega de equipe talvez cada renomeou a mesma propriedade.For example, you and your teammate may each have renamed the same property.

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

Se você encontrar esse tipo de conflito, resolvê-lo ao criar novamente sua migração.If you encounter this kind of conflict, resolve it by re-creating your migration. Siga estas etapas:Follow these steps:

  1. Anular a mesclagem e a reversão para seu diretório de trabalho antes da mesclagemAbort the merge and rollback to your working directory before the merge
  2. Remover sua migração (mas manter as alterações de modelo)Remove your migration (but keep your model changes)
  3. Mesclar alterações do seu colega de equipe em seu diretório de trabalhoMerge your teammate's changes into your working directory
  4. Adicione novamente a migraçãoRe-add your migration

Depois de fazer isso, duas migrações podem ser aplicadas na ordem correta.After doing this, the two migrations can be applied in the correct order. Sua migração é aplicada primeiro, a coluna para a renomeação Alias, depois disso, sua migração renomeia-o para nome de usuário.Their migration is applied first, renaming the column to Alias, thereafter your migration renames it to Username.

A migração pode ser compartilhada com segurança com o restante da equipe.Your migration can safely be shared with the rest of the team.