Skip to content

Latest commit

 

History

History
42 lines (24 loc) · 3.82 KB

overview.md

File metadata and controls

42 lines (24 loc) · 3.82 KB

Обзор

ThinkingHome.Migrator — система контроля версий базы данных для .NET Core, похожая на EntityFramework Migrations. Цель — автоматизировать внесение изменений в БД (например, при развертывании или обновлении приложения) и обеспечить контроль версий БД.

Основная идея

Все изменения БД записываются в коде миграций — классов, написанных на языке программирования (например, на C#).

Миграции компилируются в файл .dll. После этого вы можете выполнить изменения БД с помощью консольной утилиты migrate-database, передав в параметрах строку подключения к БД и путь к файлу .dll с миграциями.

Описание изменений

Классы миграций наследуются от базового класса ThinkingHome.Migrator.Framework.Migration и реализуют его методы Apply (применить изменения) и Revert (откатить изменения).

Внутри этих методов разработчик при помощи специального API описывает действия, которые нужно выполнить над БД. Например, добавление колонки будет выглядеть так:

public override void Apply()
{
    Database.AddColumn("Table1", new Column("Num", DbType.Int32));
}

Есть также возможность выполнить произвольный SQL.

Контроль версий

Для каждой миграции указывается номер версии, в которую перейдет БД после внесения описанных в миграции изменений.

Учет версий ведется автоматически: информация о выполненных миграциях сохраняется в БД в специальной таблице. Имея сборку с миграциями, в которых реализованы методы Apply и Revert, можно обновить БД любой версии до любой другой версии (как выше, так и ниже текущей).

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

Поддерживаемые СУБД

ThinkingHome.Migrator предоставляет одинаковый API для управления разными СУБД. При запуске миграций нужно указать название провайдера трансформации, который будет генерировать SQL запросы для нужной СУБД.

В проекте ThinkingHome.Migrator уже реализованы провайдеры для MS SQL Server, PostgreSQL, Oracle, MySQL, SQLite. Вы можете реализовать свой провайдер для любой нужной СУБД.

Далее

Начало работы.