public void InitializeDatabase() { var migrator = new SimpleMigrator(typeof(DatabaseInitializer).Assembly, new PostgresqlDatabaseProvider(_con)); migrator.Load(); migrator.MigrateTo(1); migrator.MigrateToLatest(); }
public void Migrate(string[] args) { var options = Cli.Parse <MigrateOptions>(args); var connectionString = $"SslMode=none;Server={options.Host};Port={options.Port};Database={options.Database};Uid={options.User};Pwd={options.Password};"; using (var con = new MySqlConnection(connectionString)) { con.Open(); var databaseProvider = new MysqlDatabaseProvider(con) { TableName = "__version" }; AssemblyMigrationProvider assemblyProvider = null; switch (options.Schema.ToLower()) { case "auth": assemblyProvider = new AssemblyMigrationProvider(s_authType.Assembly, s_authType.Namespace); break; case "game": assemblyProvider = new AssemblyMigrationProvider(s_gameType.Assembly, s_gameType.Namespace); break; default: Error("Invalid schema"); break; } try { var migrator = new SimpleMigrator(assemblyProvider, databaseProvider, new ConsoleLogger()); migrator.Load(); if (options.CurrentVersion > 0) { migrator.Baseline(options.CurrentVersion); } if (options.Version == 0) { migrator.MigrateToLatest(); } else { migrator.MigrateTo(options.Version); } } catch (MigrationNotFoundException ex) { Error(ex.Message); } } }
public void DowngradeDataBase() { int versionTo = 0; using (var connection = new NpgsqlConnection(cnn)) { var databaseProvider = new PostgresqlDatabaseProvider(connection); var migrator = new SimpleMigrator(assemblyTo, databaseProvider); // carregar todos os estados de versões da base de dados. migrator.Load(); // a versão da db atual deve ser maior que a versão versionTo. if (migrator.CurrentMigration.Version > versionTo) { // versão da db para qual deseja voltar. migrator.MigrateTo(versionTo); } Assert.IsTrue(migrator.CurrentMigration.Version == migrator.LatestMigration.Version); } }
private static void ExecuteMigrations(IDbConnection connection, string[] args) { if (connection == null) { return; } using (var conn = connection) { var databaseProvider = new SqlDatabaseProvider(conn); var migrator = new SimpleMigrator <IDbConnection, BaseMigration>(Assembly.GetCallingAssembly(), databaseProvider); try { if (args == null || args.Length == 0) { migrator.Load(); if (RollbackVersion.HasValue && RollbackVersion > 0) { migrator.MigrateTo(RollbackVersion.Value); } if (MigrateToLatest) { migrator.MigrateToLatest(); } } else { var console = new ConsoleRunner(migrator); console.Run(args); } } catch { throw; } } }
public void RunMigrations(DbService db) { var migrationsAssembly = typeof(Startup).Assembly; using (var pg = db.CreateConnection(longTimeout: true)) { var databaseProvider = new PostgresqlDatabaseProvider(pg); var migrator = new SimpleMigrator(migrationsAssembly, databaseProvider); migrator.Load(); if (migrator.CurrentMigration == null || migrator.CurrentMigration.Version == 0) { migrator.Baseline(2); } migrator.MigrateTo(5); if (migrator.LatestMigration.Version != migrator.CurrentMigration.Version) { throw new Exception($"The newest available migration ({migrator.LatestMigration.Version}) != The current database migration ({migrator.CurrentMigration.Version}). You probably need to add a call to run the migration."); } } }
public static void Main(string[] args) { var connectionString = @"Data Source=LT-17-623\SQL17;Initial Catalog=ASPNetCoreTest;Persist security info=True;Integrated Security=SSPI"; var migrateCommandText = "migrate"; var rollBackCommandText = "rollback"; var versionCommand = "-v"; Console.WriteLine("MigratonRunner commands"); Console.WriteLine(); Console.WriteLine("migrate"); Console.WriteLine("migrate -v <VERSION>"); Console.WriteLine("rollback"); Console.WriteLine("rollback -v <VERSION>"); Console.WriteLine(); Console.WriteLine("ENTER COMMAND"); Console.WriteLine(); using (var connection = new SqlConnection(connectionString)) { var databaseProvider = new MssqlDatabaseProvider(connection); var migrator = new SimpleMigrator(Assembly.Load(new AssemblyName("Migrations.Sql")), databaseProvider); migrator.Load(); var newMigrations = migrator.Migrations.Where(x => x.Version > migrator.CurrentMigration.Version); if (newMigrations.Any()) { Console.WriteLine("There are new migrations"); Console.ForegroundColor = ConsoleColor.Green; foreach (var migration in newMigrations.OrderBy(x => x.Version)) { Console.WriteLine(migration.Version.ToString() + "-" + migration.Description); } Console.ResetColor(); } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("There are no new migrations"); Console.ResetColor(); } } var commandText = Console.ReadLine(); if (commandText.ToLower().Contains(migrateCommandText)) { if (commandText.ToLower().Contains(versionCommand)) { string version = commandText.Substring(commandText.IndexOf(versionCommand) + versionCommand.Length + 1); long versionLong; var castedToLong = long.TryParse(version, out versionLong); if (castedToLong) { using (var connection = new SqlConnection(connectionString)) { var databaseProvider = new MssqlDatabaseProvider(connection); var migrator = new SimpleMigrator(Assembly.Load(new AssemblyName("Migrations.Sql")), databaseProvider); migrator.Load(); migrator.MigrateTo(versionLong); } Console.WriteLine("migrate database to the version " + version + " !"); Console.ReadKey(); } } else { using (var connection = new SqlConnection(connectionString)) { var databaseProvider = new MssqlDatabaseProvider(connection); var migrator = new SimpleMigrator(Assembly.Load(new AssemblyName("Migrations.Sql")), databaseProvider); migrator.Load(); migrator.MigrateToLatest(); } Console.WriteLine("migrate database to latest version"); Console.ReadKey(); } } else if (commandText.ToLower().Contains(rollBackCommandText)) { if (commandText.ToLower().Contains(versionCommand)) { string version = commandText.Substring(commandText.IndexOf(versionCommand) + versionCommand.Length + 1); long versionLong; var castedToLong = long.TryParse(version, out versionLong); if (castedToLong) { using (var connection = new SqlConnection(connectionString)) { var databaseProvider = new MssqlDatabaseProvider(connection); var migrator = new SimpleMigrator(Assembly.Load(new AssemblyName("Migrations.Sql")), databaseProvider); migrator.Load(); migrator.MigrateTo(versionLong); } Console.WriteLine("rollback database to the version " + version + " !"); Console.ReadKey(); } } else { Console.WriteLine("Are you sure? y/n"); var rollbackResp = Console.ReadLine(); if (rollbackResp.Contains("y")) { using (var connection = new SqlConnection(connectionString)) { var databaseProvider = new MssqlDatabaseProvider(connection); var migrator = new SimpleMigrator(Assembly.Load(new AssemblyName("Migrations.Sql")), databaseProvider); migrator.Load(); migrator.MigrateTo(0); } Console.WriteLine("rollback database!"); Console.ReadKey(); } else { Console.WriteLine("rollback canceled!"); Console.ReadKey(); } } } else { Console.WriteLine("Command not found, please write migrate or rollback"); Console.ReadKey(); } }