Автоматическая миграция базы данных приложения при обновлении приложения - PullRequest
0 голосов
/ 04 марта 2011

Интересно, знает ли кто-нибудь о хороших рамках или совете о том, как автоматически хранить и обновлять базу данных в зависимости от версии.

Например, представьте, что мы находимся на версии 1.1, а программное обеспечение обновлено до версии 2.0. Есть определенные вещи, которые должны произойти между 1.1 и 2.0, чтобы вещи были совместимы.

  • 1.2 добавляет новую таблицу
  • 1.3 удаляет старую таблицу и изменяет некоторые имена полей
  • 1.4 Добавляет связь между таблицей a и b.

Таким образом, чтобы версия 2.0 работала с базой данных версии 1.1, необходимо выполнить описанные выше процедуры, прежде чем запускать приложение.

Как мы делали это раньше, у нас был номер версии, сохраненный в поле в базе данных. Класс наследовал бы для базового класса и называл бы себя Update + номером версии , например, Update1.2. Каждый класс будет выполнять свои необходимые задачи, обновлять номер версии и продолжать процесс.

Должна быть какая-то основа для этого или хотя бы рекомендуемый способ действий?

Буду признателен за любую помощь.

1 Ответ

4 голосов
/ 04 марта 2011

Используйте структуру миграции, например, MigratorDotNet , которым мы пользуемся в нашей компании и которым вполне довольны. По мере развития вашего приложения вы добавляете больше миграций (в форме классов, которые наследуются от базового класса миграции и переопределяют два метода для миграции вверх и вниз; внутри этих методов вы используете простой API для выдачи операторов SQL). Каждая миграция имеет порядковый номер или метку времени, и MigratorDotNet поддерживает таблицу в базе данных, которая отслеживает, какие миграции были применены. При запуске приложения применяются необходимые миграции, поэтому база данных всегда соответствует требованиям кода приложения.

Другими словами, вы делали это правильно, но, действительно, для этого есть рамки. : -)

...