/// <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);
        }
Exemple #2
0
        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);
            }
        }
Exemple #4
0
        /// <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);
        }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
        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!");
        }