Inheritance: IDatabaseMigrator
        public void Start(string connectionStringName)
        {
            try
            {
                List<string> migrationTags = GetMigrationTags();

                var runner = new DatabaseMigrator(connectionStringName, assembly, new MigrationOptions() { PreviewOnly = false, Timeout = 0 }, migrationTags);

                runner.MigrateUp();

                Environment.Exit(0);
            }
            catch (Exception e)
            {
                Console.WriteLine("Error in database migration: {0}", e.Message);
                
                Environment.Exit(1);
            }
        }
        private IDatabaseMigrator GetRunnerProperties(string connectionStringName, List<string> migrationTags = null)
        {
            string outputToFile = null;

            while (string.IsNullOrEmpty(outputToFile) || (!outputToFile.Equals("yes") && !outputToFile.Equals("no")))
            {
                Console.Write("Log output as .sql file (yes/no)? ");

                outputToFile = Console.ReadLine();
            }

            IDatabaseMigrator runner;

            if (outputToFile.Equals("yes"))
            {
                runner = new LoggingDatabaseMigrator(connectionStringName, assembly, new MigrationOptions() { PreviewOnly = false, Timeout = 0 });
            }
            else
            {
                runner = new DatabaseMigrator(connectionStringName, assembly, new MigrationOptions() { PreviewOnly = false, Timeout = 0 }, migrationTags);
            }

            return runner;
        }