Pull to refresh

Миграции БД для .NET

Reading time 2 min
Views 3.1K
Добрый вечер!

Вышла версия 2.0 инструмента для версионной миграции БД - ECM7.MigratorНедавно здесь поднималась тема версионного изменения структуры БД. Среди готовых решений для миграции БД (для .NET-проектов) там упоминался проект ECM7.Migrator, одним из авторов которого я являюсь.

Вчера мы, наконец, отрелизили версию 2.0. Взять новую версию можно на страничке проекта в google code и в галерее пакетов nuget.


WTF


ECM7.Migrator — форк проекта Migrator.NET, появившийся 2 года назад и живущий теперь самостоятельной жизнью.

Основная идея — изменения БД записываются в коде при помощи специального фреймворка. Все изменения находятся в специальных классах — миграциях. Каждая миграция имеет номер и может быть выполнена как вперед (применение изменений), так и назад (откат изменений). Таким образом можно из любой версии БД получить любую другую.

Мигратор также содержит средства для выполнения миграций: консольное приложение и таски для NAnt/MSBuild.

Подробнее о миграторе можно почитать здесь.

Версия 2.0


К версии 2.0 мы шли больше полугода. За это время был сделан большой объем работы. Вот список основных изменений:
  • полностью переписано ядро;
  • возможность вести в одной БД параллельный учет версий нескольких независимых компонентов системы;
  • возможность настройки мигратора при помощи конфигурационного файла приложения;
  • новая система логирования на основе log4net;
  • экранирование зарезервированных слов в названиях;
  • поддержка MS SqlServer CE 4, отсутствует поддержка версий SQLServer CE < 4;
  • новая функция FormatSql в интерфейсе ITransformationProvider для написания независимых от СУБД SQL-запросов;
  • удалены методы Select и SelectScalar из интерфейса ITransformationProvider — используйте методы ExecuteQuery и ExecuteScalar;
  • открытие соединения в провайдере трансформации теперь происходит по требованию;
  • удалена возможность выполнения миграций из нескольких сборок;
  • удалены некоторые загадочные классы, оставшиеся от Migrator.NET и не содержащие полноценно реализованного функционала;
  • из класса миграции удалены методы AfterUp, AfterDown, InitializeOnce;
  • дополнительные проверки корректности номеров миграций в сборке.


PS.


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

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

Мы уже получили то, что хотели. Если топик снова заминусуют — ничего не изменится. Если же благодаря этому топику кто-то откроет для себя новый способ работы с БД — мы будем очень рады. Также я с удовольствием отвечу на любые ваши вопросы, касающиеся мигратора.

Спасибо за внимание!
Tags:
Hubs:
+32
Comments 29
Comments Comments 29

Articles