Execute migration scripts written in plain old SQL. Only executes each migration once.
dotnet add package PlainSql.Migrations
PlainSql.Migrations
provide a script loader and a migrator that interact to load and execute migration scripts.
using PlainSql.Migrations;
private void ExecuteMigrations(string connectionString, string environment)
{
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var migrationScripts = MigrationScriptsLoader.FromDirectory("./MigrationScripts");
Migrator.ExecuteMigrations(connection, migrationScripts);
Console.Writeline("Executed database migration scripts");
}
}
MigrationScriptsLoader.FromDirectory
orders the migration scripts alphabetically
(using System.StringComparer.InvariantCulture
).
PlainSql.Migrations
offers a .NET Global tool that can be installed like so dotnet tool install --global PlainSql.Migrations.Tool
and then executed from the terminal like so migrate -c "Uid=myuser;Pwd=password1;Host=localhost;Database=northwind;" -d postgres
.
- SQLite
- MS SQL
- PostgreSQL
Migrations are executed in a single transaction with isolation level "Serializable". This usually means that executing migrations is concurrency-safe. For details on which SQL statements are supported by this transaction level, please refer to the documentation of your database technology.