private static void Update(MigratorLoggingDecorator logger) { var last = logger.GetDatabaseMigrations().OrderByDescending(m => m).FirstOrDefault(); try { if (File.Exists(NOME_ARQUIVO_LAST_MIGRATION_VALIDA)) { File.Delete(NOME_ARQUIVO_LAST_MIGRATION_VALIDA); } logger.Update(); File.WriteAllText(NOME_ARQUIVO_LAST_MIGRATION_VALIDA, last); } catch (SqlException ex) { // LogManagerComum.LogarErro(ex, mensagem: "DEPLOY PGD -> UPDATE DATABASE"); Console.WriteLine("Erro ao executar Update Database: " + ex.Message); try { logger.Configuration.AutomaticMigrationDataLossAllowed = true; logger.Update(last); logger.Configuration.AutomaticMigrationDataLossAllowed = false; } catch (SqlException ex2) { // LogManagerComum.LogarErro(ex2, mensagem: "DEPLOY PGD -> UPDATE DATABASE -> *** ATENCAO *** PROBLEMAS NO ROLLBACK!!!!!"); } Environment.ExitCode = -1; } }
internal override void DoWork() { logger.LogInformation("Create migration"); var connectionString = configuration.GetConnectionString("DefaultConnection"); //TODO mask connection string from logs; //logger.LogInformation("Discovered connection string {connectionString}", connectionString); var migrator = new MigratorLoggingDecorator(new DbMigrator(new JoinMigrationsConfig(connectionString)), new MigrationsLoggerILoggerAdapter(logger)); logger.LogInformation("Migrator created"); logger.LogInformation("Start migration"); logger.LogInformation("Last local migration {lastLocal}", migrator.GetLocalMigrations().OrderBy(x => x).LastOrDefault()); logger.LogInformation("Last DB migration {lastDb}", migrator.GetDatabaseMigrations().OrderBy(x => x).LastOrDefault()); var pending = migrator.GetPendingMigrations(); logger.LogInformation("Pending migrations {pending}", string.Join("\n", pending)); migrator.Update(); logger.LogInformation("Migration completed"); }