Начать миграцию в FluentMigrator
Мне нужно использовать FluentMigrator для выполнения миграций моей базы данных. FluentMigrator кажется хорошей и простой в использовании библиотекой. Но я думаю, что что-то упустил... как начать миграцию? Как установить тип базы данных? Как установить строку подключения?
В GitHub я не могу найти метод main() или какую-то точку входа
Большое спасибо!
2 ответа
Я написал помощник для этого, проверить это здесь
Чтобы запустить миграцию, вам необходимо использовать одного из участников миграции - https://github.com/schambers/fluentmigrator/wiki/Migration-Runners.
Они позволяют запускать миграцию непосредственно из командной строки или из Nant, MSBuild или Rake. В документации описано, как установить строку подключения и указать тип базы данных.
Скорее всего, вы ищете Migration runners. Вот код бегуна внутрипроцессной миграции со страницы документации:
using System;
using System.Linq;
using FluentMigrator.Runner;
using FluentMigrator.Runner.Initialization;
using Microsoft.Extensions.DependencyInjection;
namespace test
{
class Program
{
static void Main(string[] args)
{
var serviceProvider = CreateServices();
// Put the database update into a scope to ensure
// that all resources will be disposed.
using (var scope = serviceProvider.CreateScope())
{
UpdateDatabase(scope.ServiceProvider);
}
}
/// <summary>
/// Configure the dependency injection services
/// </summary>
private static IServiceProvider CreateServices()
{
return new ServiceCollection()
// Add common FluentMigrator services
.AddFluentMigratorCore()
.ConfigureRunner(rb => rb
// Add SQLite support to FluentMigrator
.AddSQLite()
// Set the connection string
.WithGlobalConnectionString("Data Source=test.db")
// Define the assembly containing the migrations
.ScanIn(typeof(AddLogTable).Assembly).For.Migrations())
// Enable logging to console in the FluentMigrator way
.AddLogging(lb => lb.AddFluentMigratorConsole())
// Build the service provider
.BuildServiceProvider(false);
}
/// <summary>
/// Update the database
/// </summary>
private static void UpdateDatabase(IServiceProvider serviceProvider)
{
// Instantiate the runner
var runner = serviceProvider.GetRequiredService<IMigrationRunner>();
// Execute the migrations
runner.MigrateUp();
}
}
}