Чтобы писать миграции, подключите в свой проект пакет ThinkingHome.Migrator.Framework из NuGet.
dotnet add package ThinkingHome.Migrator.Frameworkusing ThinkingHome.Migrator.Framework;
[Migration(12)]
public class MyTestMigration : Migration
{
public override void Apply()
{
Database.AddTable("CustomerAddress",
new Column("customerId", DbType.Int32, ColumnProperty.PrimaryKey),
new Column("addressId", DbType.Int32, ColumnProperty.PrimaryKey));
}
public override void Revert()
{
Database.RemoveTable("CustomerAddress");
}
}Обратите внимание:
- Класс миграции унаследован от базового класса
ThinkingHome.Migrator.Framework.Migration. - Для миграции указан номер версии (параметр атрибута
[Migration(12)]), в которую перейдет БД после выполнения изменений, описанных в теле миграции. - Класс миграции должен реализовывать абстрактный метод
Apply(применить изменения) и может реализовывать виртуальный методRevert(откат изменений). Если откат изменений не нужен, методRevertможно не переопределять. В этом случае будет использоваться его пустая реализация из базового класса. - Для изменений БД используется API провайдера трансформации, экземпляр которого доступен через свойство
Databaseбазового классаMigration. API предоставляет методы для выполнения операций над БД: например,AddTable(добавление таблицы) илиExecuteNonQuery(выполнение произвольного SQL-запроса).
Подробнее об API провайдера трансформации вы можете узнать в разделе Описание классов миграций.
Установите утилиту migrate-database из NuGet пакета ThinkingHome.Migrator.CLI.
dotnet tool install -g thinkinghome.migrator.cliЗапустите migrate-database, указав нужный тип СУБД, строку подключения и путь к сборке с миграциями.
migrate-database postgres "host=localhost;port=5432;database=migrations;" /path/to/migrations.dll Также вы можете выполнить миграции из своего приложения на .NET Core, используя API мигратора. Например, вы можете написать приложение, которое при запуске само создает себе нужную структуру БД. Подробнее об этом в разделе Как запустить.
Узнайте подробнее о написании миграций и API провайдеров трансформации.