Я использовал первые миграции для Entity Framework в настоящее время в совершенно новом проекте, и до сих пор они работали нормально в основной версии приложения.Миграции Entity Framework - управление ветвями
Однако мы сейчас находимся в точке проекта, где создаются ветви, так как мы имеем несколько рабочих потоков. В рамках последней части работы мы поняли, что использование миграции по отраслям может быть проблематичным - так что мой вопрос в том, что люди нашли лучший способ управления этим?
Например (я явно упростили это ради обсуждения):
Отрасль A: Разработчик 1 добавляет миграцию «Add-UserDateCreated», который добавляет поле к объекту пользователя. Файл миграции содержит код для добавления поля и состояние модели в то время.
Отрасль B: Разработчик 2 добавляет миграцию «Add-UserMiddleName», которая добавляет другое поле в объект пользователя. Файл миграции содержит код для добавления поля, и в то же время имеет состояние модели (но у него, очевидно, нет поля, добавленного в другую миграцию).
Эти миграции прекрасно работают на ветвях, но когда вы объедините их обратно в ствол, то застревают:
- Вы не можете просто сохранить отдельные файлы миграции, сохраненной модели государства не будет быть верным. Например, миграция «Add-UserMiddleName» ДОЛЖНА иметь состояние модели с добавленным полем «Add-UserDateCreated», но это не так.
- Вы не можете объединить миграции в один файл, как вы нажмете тот же вопрос *
Это означает, что единственный способ избежать этих поистине вопросов должны работать на другую копию базы данных для каждого филиала, игнорируйте миграцию, когда вы выполняете слияние в магистраль, и добавьте миграцию основного снимка при завершении слияния (в версии соединительной линии базы данных) - но тогда вы потенциально можете столкнуться с большим количеством изменений в одной миграции, которая никогда не хорошая идея (а также потерять любой пользовательский код, который вы написали в своем классе миграции).
Так как же другие люди управляют такими ситуациями? Мне было бы интересно узнать мнение других народов.
* Мне любопытно, какие проблемы это действительно вызовет в реальном мире, если кто-нибудь знает?
Thanks Martin - это еще один полезный способ сделать это. Думаю, я никогда не думал о слиянии изменений «как хочешь» раньше, обычно предпочитая перестроить все миграции после того, как все изменения будут объединены обратно в багажник. Думаю, вопрос в том, какой путь лучше? :) – stevehayter