В настоящее время я работаю в команде, которая использует Entity Framework 6.1.3 в качестве основной структуры объектно-реляционного отображения (ORM).
В большинстве случаев это работает очень хорошо, но проблемы начинаются, когда два или более разных члена команды добавили миграции, и их следует объединить.
Пример от Microsoft:

Чтобы постоянно обновлять model snapshot
, мы обычно Add a blank 'merge' migration
обновляем снимок.Из PMC:
Add-Migration "Fix merge" –IgnoreChanges
Конечно, мы могли бы update the model snapshot in the last migration
, но, поскольку мы используем запросы извлечения и проверяем код друг друга, часто могут быть две ожидающие миграции, но ни одна из них не добавляется в master
ветки пока нет, потому что они не рецензируются.
Учитывая пустую миграцию, у нас, однако, также возникли проблемы.Пример: две миграции синхронизированы с master, и снимок модели не синхронизирован.Разработчик внес некоторые изменения в модели базы данных, а затем выполняет слияние с мастером.Разработчик должен добавить пустое слияние для синхронизации снимка модели.Проблема с использованием –IgnoreChanges
состоит в том, что миграция будет пустой, даже если есть какие-то изменения, которые разработчик внес в модели в своей ветке.Если –IgnoreChanges
не используется, то каждое изменение из новых миграций также будет отображаться и, вероятно, вызовет исключение, потому что код будет добавлен дважды.
https://msdn.microsoft.com/en-us/library/dn481501(v=vs.113).aspx
Есть ли какие-либоиначе мы могли бы решить это в коде?Сейчас мы предупреждаем о миграциях в Slack, чтобы дать им приоритет в запросах по запросу, но это далеко от оптимального потока.Учитывая то, что я читал, я не думаю, что это возможно, но я бы с радостью ошибся.Учитывая поток запросов на извлечение, который мы используем сегодня, обновление снимка модели в последней миграции не всегда работает для нас.