Migracja w środowiskach zespołuMigrations in Team Environments

Podczas pracy z migracji w środowiskach zespołu, należy zwracać szczególną uwagę na migawki pliku modelu.When working with Migrations in team environments, pay extra attention to the model snapshot file. Ten plik może określić, czy migracja z partnerem nie pozostawia żadnych śladów scala z Twoimi czy trzeba rozwiązać konflikt, ponownie tworząc migracji przed ich udostępnieniem.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.

ScalanieMerging

Podczas migracji scalania z członkami zespołu, może wystąpić konflikty w modelu migawki pliku.When you merge migrations from your teammates, you may get conflicts in your model snapshot file. W przypadku niepowiązanych obie zmiany scalanie jest proste i dwie migracje mogą współistnieć.If both changes are unrelated, the merge is trivial and the two migrations can coexist. Na przykład może wystąpić konflikt scalania w konfiguracji typu jednostki Klient, który wygląda tak: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

Ponieważ obu tych właściwości muszą istnieć w ostatnim modelu Ukończ scalanie, dodając obie te właściwości.Since both of these properties need to exist in the final model, complete the merge by adding both properties. W wielu przypadkach system kontroli wersji może automatycznie scalić takich zmian.In many cases, your version control system may automatically merge such changes for you.

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

W takich przypadkach migracji i migrację z partnerem są niezależne od siebie nawzajem.In these cases, your migration and your teammate's migration are independent of each other. Ponieważ którąś z tych funkcji można najpierw zastosować, nie potrzebujesz dodatkowych zmian przed ich udostępnieniem ze swoim zespołem migracji.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.

Rozwiązywanie konfliktówResolving conflicts

Czasami wystąpią true konflikt podczas scalania model modelu migawki.Sometimes you encounter a true conflict when merging the model snapshot model. Na przykład możesz i z partnerem każdego zmieniona tej samej właściwości.For example, you and your teammate may each have renamed the same property.

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

Jeśli wystąpi tego rodzaju konflikt rozwiązać ten problem, ponownie utworzyć plan migracji.If you encounter this kind of conflict, resolve it by re-creating your migration. Wykonaj następujące kroki:Follow these steps:

  1. Przerwij, scalania i wycofania do katalogu roboczego przed scaleniemAbort the merge and rollback to your working directory before the merge
  2. Usuń plan migracji (ale zachować zmiany modelu)Remove your migration (but keep your model changes)
  3. Scal zmiany z partnerem w katalogu roboczymMerge your teammate's changes into your working directory
  4. Ponowne dodanie migracjiRe-add your migration

Po wykonaniu tego, dwie migracje mogą być stosowane w odpowiedniej kolejności.After doing this, the two migrations can be applied in the correct order. Ich migracji zostanie zastosowana jako pierwsza, zmiana nazwy kolumny, która ma Alias, po tej dacie migracji zmienia jego nazwę, aby Username.Their migration is applied first, renaming the column to Alias, thereafter your migration renames it to Username.

Migracja może być bezpiecznie udostępniane reszta zespołu.Your migration can safely be shared with the rest of the team.