Миграция в командных средах
При работе с миграциями в командных средах обратите особое внимание на файл моментального снимка модели. Этот файл может сообщить, выполняется ли миграция товарища по команде чисто с вашими или если вам нужно устранить конфликт, повторно создав миграцию перед предоставлением общего доступа к ней.
слияние
При слиянии миграций с товарищей по команде могут возникнуть конфликты в файле моментального снимка модели. Если оба изменения не связаны, слияние является тривиальным, и два миграции могут сосуществовать. Например, вы можете получить конфликт слияния в конфигурации типа сущности клиента, которая выглядит следующим образом:
<<<<<<< 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
Если вы столкнулись с таким конфликтом, устраните его, повторно создав миграцию. Выполните следующие действия:
- Прервать слияние и откат к рабочему каталогу перед слиянием
- Удалите миграцию (но сохраните изменения модели)
- Слияние изменений товарища по команде в рабочий каталог
- Повторно добавьте миграцию
После этого два миграции можно применить в правильном порядке. Миграция сначала применяется, переименование столбца в Псевдоним, после чего миграция переименовывает его в имя пользователя.
Миграция может безопасно быть предоставлена остальной группе.