/// <summary> /// Creates a migration runner for the specified migration assembly against the given connection string. /// </summary> /// <param name="assembly">The assembly with migrations.</param> /// <param name="connectionString">The connection string of the database to migrate.</param> /// <param name="outputWriter"> /// The writer where output messages should be written (optional - defaults to /// System.Diagnostics.Debug output). /// </param> /// <returns>A Fluent MigrationRunner instance.</returns> public static MigrationRunner Create(Assembly assembly, string connectionString, Action <string> outputWriter = null) { if (assembly == null) { throw new ArgumentNullException("assembly"); } if (connectionString == null) { throw new ArgumentNullException("connectionString"); } if (outputWriter == null) { outputWriter = s => Debug.WriteLine(s); } var options = new MigrationOptions { PreviewOnly = false }; var announcer = new TextWriterAnnouncer(outputWriter); var migrationContext = new RunnerContext(announcer); var processorFactory = new SqlServerProcessorFactory(); var processor = processorFactory.Create(connectionString, announcer, options); var runner = new MigrationRunner(assembly, migrationContext, processor); return(runner); }
private IMigrationProcessor GetProcessor() { var factory = new SqlServerProcessorFactory(); var processor = factory.Create(_connectionString, new NullAnnouncer(), new ProcessorOptions()); return(processor); }
public void Migrate(string connectionString, Assembly assembly) { var announcer = new TextWriterAnnouncer(s => _log.LogInformation(s)); var migrationContext = new RunnerContext(announcer); var options = new MigrationOptions { PreviewOnly = false, Timeout = 60, ProviderSwitches = string.Empty }; var factory = new SqlServerProcessorFactory(); using (var processor = factory.Create(connectionString, announcer, options)) { var runner = new MigrationRunner(assembly, migrationContext, processor); runner.MigrateDown(0); runner.MigrateUp(true); } }
/// <summary> /// Executa a última versão das classes de migração /// Está configurado para MS SQL Server /// </summary> public static void MigraParaMaisRecente() { var escritor = new TextWriterAnnouncer(s => System.Diagnostics.Debug.WriteLine(s)); var montador = Assembly.GetExecutingAssembly(); var contextoMigracao = new RunnerContext(escritor); var configuracaoBancoDados = ConfiguracaoAplicacao.ConfiguracoesConexaoBancoDados; var opcoes = new OpcoesMigracao { PreviewOnly = false, Timeout = 60 }; var fabricador = new SqlServerProcessorFactory(); var processador = fabricador.Create(configuracaoBancoDados.ConnectionString, escritor, opcoes); var executor = new MigrationRunner(montador, contextoMigracao, processador); executor.MigrateUp(true); }
public static void Migrate(string connectionString) { var announcer = new TextWriterAnnouncer(s => System.Diagnostics.Debug.Write(s)); var assembly = Assembly.GetExecutingAssembly(); var migrationContext = new RunnerContext(announcer); var options = new MigrationOptions { PreviewOnly = false, Timeout = 60, ProviderSwitches = string.Empty }; var factory = new SqlServerProcessorFactory(); using (var processor = factory.Create(connectionString, announcer, options)) { var runner = new MigrationRunner(assembly, migrationContext, processor); runner.MigrateUp(true); } }
static void Main(string[] args) { _config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", false, true) .AddEnvironmentVariables() .Build(); _provider = new ServiceCollection() .AddSingleton <CancellationTokenSource>() .AddOptions() .Configure <DatabaseOptions>(_config.GetSection("database")) .AddLogging(cfg => { cfg.AddConfiguration(_config); cfg.AddConsole(); }) .BuildServiceProvider(); _logger = _provider.GetRequiredService <ILogger <Program> >(); IOptionsSnapshot <DatabaseOptions> dbSettings = _provider.GetService <IOptionsSnapshot <DatabaseOptions> >(); CreateDatabaseIfNotExists(dbSettings); SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); builder.UserID = dbSettings.Value.User; builder.Password = dbSettings.Value.Password; builder.DataSource = dbSettings.Value.Server; if (dbSettings.Value.Name != null) { builder.InitialCatalog = dbSettings.Value.Name; } _logger.LogInformation("Using connection string {0} for migrations.", builder); // Create the announcer to output the migration messages ConsoleAnnouncer announcer = new ConsoleAnnouncer() { ShowSql = true, ShowElapsedTime = true }; // Processor specific options (usually none are needed) ProcessorOptions options = new ProcessorOptions(); // Initialize the DB-specific processor SqlServerProcessorFactory processorFactory = new SqlServerProcessorFactory(); IMigrationProcessor processor = processorFactory.Create(builder.ToString(), announcer, options); // Configure the runner RunnerContext context = new RunnerContext(announcer) { AllowBreakingChange = true, }; // Create the migration runner MigrationRunner runner = new MigrationRunner( typeof(Program).Assembly, context, processor); // Run the migrations runner.MigrateUp(); Console.WriteLine("Hello World!"); }