Пример #1
0
        private static void RunMigrations()
        {
            var defaultConnection = SqlConnections.GetConnectionString("Default");

            // safety check to ensure that we are not modifying another database
            if (defaultConnection.ConnectionString.IndexOf(typeof(SiteInitialization).Namespace + @"_Default_v1") < 0)
            {
                return;
            }

            using (var sw = new StringWriter())
            {
                var announcer = new TextWriterWithGoAnnouncer(sw)
                {
                    ShowSql = true
                };

                var runner = new RunnerContext(announcer)
                {
                    Database         = "SqlServer",
                    Connection       = defaultConnection.ConnectionString,
                    Targets          = new string[] { typeof(SiteInitialization).Assembly.Location },
                    Task             = "migrate:up",
                    WorkingDirectory = Path.GetDirectoryName(typeof(SiteInitialization).Assembly.Location),
                    Namespace        = "Gimnet.Migrations.DefaultDB"
                };

                new TaskExecutor(runner).Execute();
            }
        }
        private static MigrationRunner GetMigrationRunner(StringWriter sw, MigrateDatabaseContext dbItem, Assembly migrationAssembly)
        {
            Announcer announcer = new TextWriterWithGoAnnouncer(sw)
            {
                ShowSql = true
            };

            var runnerCtx = new RunnerContext(announcer)
            {
                ApplicationContext = dbItem
            };

            if (string.IsNullOrWhiteSpace(dbItem.CurrentDatabaseNamespace))
            {
                throw new ArgumentNullException(nameof(dbItem.CurrentDatabaseNamespace), "<DatabaseNamespace> should not null or empty");
            }

            runnerCtx.Namespace = dbItem.CurrentDatabaseNamespace;

            var options = new ProcessorOptions {
                PreviewOnly = false, Timeout = dbItem.ConnectionTimeout
            };
            var factory = new FluentMigrator.Runner.Processors.SqlServer.SqlServer2014ProcessorFactory();

            using (var processor = factory.Create(dbItem.ConnectionString, announcer, options))
            {
                return(new MigrationRunner(migrationAssembly, runnerCtx, processor));
            }
        }
 public void TestSetup()
 {
     _stringWriter = new StringWriter();
     _announcer    = new TextWriterWithGoAnnouncer(_stringWriter)
     {
         ShowElapsedTime = true,
         ShowSql         = true
     };
 }
        private static void RunMigrations(string databaseKey)
        {
            var cs         = SqlConnections.GetConnectionString(databaseKey);
            var connection = cs.ConnectionString;

            // safety check to ensure that we are not modifying an arbitrary database.
            // remove these two lines if you want MovieTutorial migrations to run on your DB.
            if (cs.ConnectionString.IndexOf(typeof(SiteInitialization).Namespace +
                                            @"_" + databaseKey + "_v1", StringComparison.OrdinalIgnoreCase) < 0)
            {
                SkippedMigrations = true;
                return;
            }

            string databaseType = "SqlServer";

            if (String.Equals(cs.ProviderName, "npgsql", StringComparison.OrdinalIgnoreCase))
            {
                databaseType = "Postgres";
            }
            else if (String.Equals(cs.ProviderName, "MySql.Data.MySqlClient", StringComparison.OrdinalIgnoreCase))
            {
                databaseType = "MySql";
            }

            using (var sw = new StringWriter())
            {
                var announcer = new TextWriterWithGoAnnouncer(sw)
                {
                };

                var runner = new RunnerContext(announcer)
                {
                    Database         = databaseType,
                    Connection       = cs.ConnectionString,
                    Targets          = new string[] { typeof(SiteInitialization).Assembly.Location },
                    Task             = "migrate:up",
                    WorkingDirectory = Path.GetDirectoryName(typeof(SiteInitialization).Assembly.Location),
                    Namespace        = "MovieTutorial.Migrations." + databaseKey + "DB"
                };

                new TaskExecutor(runner).Execute();
            }
        }