Поделиться через


Миграция в командных средах

При работе с миграциями в командных средах обратите особое внимание на файл моментального снимка модели. Этот файл может сообщить, выполняется ли миграция товарища по команде чисто с вашими или если вам нужно устранить конфликт, повторно создав миграцию перед предоставлением общего доступа к ней.

слияние

При слиянии миграций с товарищей по команде могут возникнуть конфликты в файле моментального снимка модели. Если оба изменения не связаны, слияние является тривиальным, и два миграции могут сосуществовать. Например, вы можете получить конфликт слияния в конфигурации типа сущности клиента, которая выглядит следующим образом:

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

Так как оба этих свойства должны существовать в конечной модели, выполните слияние, добавив оба свойства. Во многих случаях система управления версиями может автоматически объединять такие изменения.

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

В этих случаях миграция и миграция товарища по команде не зависят друг от друга. Так как любой из них может быть применен первым, вам не нужно вносить дополнительные изменения в миграцию, прежде чем делиться им с командой.

Разрешение конфликтов

Иногда при слиянии модели моментальных снимков модели возникает истинный конфликт. Например, вы и ваш товарищ по команде могут переименовать одно и то же свойство.

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

Если вы столкнулись с таким конфликтом, устраните его, повторно создав миграцию. Выполните следующие действия:

  1. Прервать слияние и откат к рабочему каталогу перед слиянием
  2. Удалите миграцию (но сохраните изменения модели)
  3. Слияние изменений товарища по команде в рабочий каталог
  4. Повторно добавьте миграцию

После этого два миграции можно применить в правильном порядке. Миграция сначала применяется, переименование столбца в Псевдоним, после чего миграция переименовывает его в имя пользователя.

Миграция может безопасно быть предоставлена остальной группе.