示例#1
0
        private MigrationRunner GetRunner()
        {
            var assembly = typeof(Product).Assembly;

            App.Log.Info("Migrating {0}", assembly.FullName);

            var announcer = new TextWriterAnnouncer(s =>
            {
                s = s.Replace(Environment.NewLine, string.Empty);

                if (string.IsNullOrEmpty(s) == false)
                {
                    App.Log.Debug(s);
                }
            });

            var migrationContext = new RunnerContext(announcer);
            var factory          = new SqlServer2014ProcessorFactory();
            var processor        = factory.Create(App.ConnectionString, announcer, new ProcessorOptions
            {
                Timeout     = 60,
                PreviewOnly = false
            });

            var runner = new MigrationRunner(assembly, migrationContext, processor);

            return(runner);
        }
示例#2
0
        public int Run()
        {
            var announcer = new TextWriterAnnouncer(s => System.Diagnostics.Debug.WriteLine(s))
            {
                ShowSql = true
            };

            IRunnerContext migrationContext = new RunnerContext(announcer)
            {
                Profile = Constants.MigratorProfileName
            };

            var processor = new SqlServer2014ProcessorFactory().Create(DatabaseConnectionString, announcer, new ProcessorOptions
            {
                PreviewOnly = false,
                Timeout     = _options.TimeoutSeconds
            });

            var runner = new MigrationRunner(Assembly.GetEntryAssembly(), migrationContext, processor);

            try
            {
                if (_options.GenerateEnums)
                {
                    runner.Up(new EnumTableGenerator());
                }
                if (_options.MigrationRequest.HasValue)
                {
                    runner.MigrateUp(_options.MigrationRequest.Value, true);
                }
                else
                {
                    runner.MigrateUp(true);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
                return(-1);
            }

            return(0);
        }
示例#3
0
        private static MigrationRunner GetMigrationRunner(
            Assembly migrationAssembly,
            string connectionString,
            string databaseName,
            Action <string> announcer,
            TimeSpan timeout,
            object applicationContext)
        {
            if (timeout == default(TimeSpan))
            {
                timeout = TimeSpan.FromSeconds(30);
            }

            var realConnectionString = ReplaceOrAddInitialCatalogInConnectionString(connectionString, databaseName);

            var fluentMigratorAnnouncer = new TextWriterAnnouncer(announcer)
            {
                ShowElapsedTime = true, ShowSql = true
            };

            var options = new MigrationOptions {
                PreviewOnly = false, Timeout = (int)timeout.TotalSeconds
            };

            var migrationContext = new RunnerContext(fluentMigratorAnnouncer)
            {
                ApplicationContext = applicationContext,
                Database           = databaseName,
                Timeout            = (int)timeout.TotalSeconds,
            };

            var factory   = new SqlServer2014ProcessorFactory();
            var processor = factory.Create(realConnectionString, fluentMigratorAnnouncer, options);
            var runner    = new MigrationRunner(migrationAssembly, migrationContext, processor);

            return(runner);
        }