Использование первых миграций кода Entity Framework в проекте DVCS

Когда дело доходит до схем баз данных, я всегда считал контроль версий проблемой.

Итак, в настоящее время я оцениваю Entity Framework Code First Migrations и пока что я действительно впечатлен.

Мой вопрос: есть ли у кого-нибудь опыт использования миграции в команде, использующей DVCS?

Если разработчики, работающие над разными ветками, создают свои собственные миграции, хорошо ли справляется с этим инструмент «Обновление базы данных» при объединении веток?

Я предполагаю, что может случиться то, что новая миграция появится в середине списка. Будет ли это затем подхвачено, или он просто ищет «более новые» миграции, чем последняя развернутая?

Я ценю, что команда должна быть осторожной, чтобы не создавать конфликтующие изменения схемы — это то, чем мы можем управлять, — но было бы полезно знать, достаточно ли умен «Update-Database», чтобы обнаружить «отсутствующую» миграцию?

Спасибо, - Крис


person Chris Roberts    schedule 24.04.2012    source источник
comment
вы пришли к выводу с этим?   -  person sirrocco    schedule 25.06.2012


Ответы (3)


Согласно одному сообщение в блоге Я мог найти по теме, кажется, что параллельная разработка, независимо от инструмента VCS, проблематична с текущим состоянием миграции базы данных в EF. Кажется, нет способа справиться с этим сценарием из-за того, как он отслеживает состояние базы данных. Павел предоставляет пример проекта на GitHub, чтобы показать проблему.

На самом деле вам может быть гораздо лучше использовать независимый инструмент для обработки миграции вашей базы данных. Я использовал Migrator.NET с большим успехом, и он правильно обрабатывает изменения схемы параллельных разработчиков. Он также использует относительно низкотехнологичный метод отслеживания «версии» базы данных, который на удивление работает очень хорошо, пока вы и ваша команда решаете в тот день, когда никто никогда не будет касаться базы данных, кроме как через класс миграции (мы назвали этот день v1 базы данных).

person Sumo    schedule 26.09.2012
comment
Посмотрите также на FluentMigrator. Кажется, что Migrator.NET устарел, и у этого проекта так много общего. Я запустил его прошлой ночью, и у него даже есть способ использовать существующие классы миграции Migrator.NET. - person Sumo; 27.09.2012

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

http://msdn.microsoft.com/en-us/data/dn481501.aspx

person Dan    schedule 08.08.2014

Я не думаю, что это работает, и я не думаю, что есть способ обойти это.

См. в этом блоге. сообщение для более подробной информации.

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

person Krzysztof Kozmic    schedule 26.09.2012