Migrações em ambientes de equipeMigrations in Team Environments

Ao trabalhar com migrações em ambientes de equipe, preste atenção extra para o 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 migração do companheiro mescla corretamente com o seu de se você precisa 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 of if you need to resolve a conflict by re-creating your migration before sharing it.

MesclandoMerging

Quando você mescla as migrações de sua equipe, você pode receber 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 estão relacionadas, a mesclagem é tão simples 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 receber 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

Já que ambas as propriedades precisam existir no modelo final, conclua a mesclagem com a adição de 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 automaticamente essas alterações 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, a migração e migração do companheiro são independentes umas das outras.In these cases, your migration and your teammate's migration are independent of each other. Desde que um deles pode ser aplicado primeiro, você não precisa fazer qualquer 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 companheiro podem 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, recriando a 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 o diretório de trabalho antes de mesclarAbort the merge and rollback to your working directory before the merge
  2. Remover a migração (mas manter as alterações de modelo)Remove your migration (but keep your model changes)
  3. Mesclar alterações do companheiro em seu diretório de trabalhoMerge your teammate's changes into your working directory
  4. Adicionar novamente a migraçãoRe-add your migration

Depois de fazer isso, as dois migrações podem ser aplicadas na ordem correta.After doing this, the two migrations can be applied in the correct order. A migração é aplicada primeiro, renomear a coluna Alias, depois disso, a migração renomeia 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.