Migrate via .NET Core Console App

Run your database migration when Console App starts. This ensures that database is always at latest compatible state before operating the service. This is made using `Yuniql.Core` nuget package. Package can be used for Worker and WebApp services.

Pre-requisites

Prepare your database

Deploy an SQL Server on Linux container or use your preferred instance.

docker run -d -e "ACCEPT_EULA=Y" -e "[email protected]!" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2017-latest

Run migration from .NET Core console app

Create new web app.

dotnet --version
3.0.100

dotnet new console -o console-sample
cd console-sample

Add Yuniql.AspNetCore.

dotnet add package Yuniql.Core
dotnet build

Copy sample database into _db directory in your project.

git clone https://github.com/rdagumampan/yuniql.git c:\temp\yuniql
cd c:\temp\yuniql\samples\basic-sqlserver-sample

Modify the Main method of Program.cs.

using Yuniql.Core;
...
...

static void Main(string[] args)
{
	var traceService = new ConsoleTraceService { IsDebugEnabled = true };
	var configuration = new Configuration
	{
		WorkspacePath = Path.Combine(Environment.CurrentDirectory, "_db"),
		ConnectionString = "Server=localhost,1400;Database=yuniqldb;User Id=SA;[email protected]!",
		AutoCreateDatabase = true
	};

	var migrationServiceFactory = new MigrationServiceFactory(traceService);
	var migrationService = migrationServiceFactory.Create();
	migrationService.Initialize(configuration.ConnectionString);
	migrationService.Run(
		configuration.WorkspacePath,
		configuration.TargetVersion,
		configuration.AutoCreateDatabase,
		configuration.Tokens,
		configuration.VerifyOnly,
		configuration.BulkSeparator);
}

Test .

dotnet build
dotnet run --debug

A working sample is available here for your reference https://github.com/rdagumampan/yuniql/tree/master/samples/sqlserver-console-sample.

Learn further

Found bugs?

Help us improve further please create an issue.

Comments