public string Down(DatabaseConnection conn, string prevVersion) { string script = Down(prevVersion); SqlScriptExecuter.ExecuteMigrtionScript(script, conn.ConnectionString, conn.ProviderName, conn.ServerType); //SqlScriptExecuter.UpdateSchemaVersion(prevVersion, conn.ConnectionString, conn.ProviderName, conn.ServerType); return script; }
public string ProcessMigrateDown(string connectionString) { try { string script = ""; string currentVersionFromDatabase = SqlScriptExecuter.GetSchemaVersion(connectionString, MigrationConfiguration.ProviderName, MigrationConfiguration.ServerType); if (currentVersionFromDatabase != "00000000000000" ) { string migrationFilePath = MigrationFactory.GetMigrationFilePathForVersion(currentVersionFromDatabase, MigrationConfiguration.migrationClassPath); string prevVersion = GetPreviousVersion(currentVersionFromDatabase, MigrationConfiguration.migrationClassPath); if (string.Empty != prevVersion) { if (migrationFilePath != null) { MigrationFactory factory = MigrationFactory.GetFactoryForDatabaseType(MigrationConfiguration.ServerType); Migration migration = factory.GetMigration(migrationFilePath, MigrationConfiguration.migrationLibraryAssemblyPath); string version = MigrationFactory.GetVersionFromMigrationFilePath(migrationFilePath); DatabaseConnection db = new DatabaseConnection(connectionString, MigrationConfiguration.ProviderName, MigrationConfiguration.ServerType); string executedMigration = "Executed Migration Version " + version + " Down " + Environment.NewLine; try { script = migration.Down(db, prevVersion); } catch (Exception ex) { return "Error:" + ex.Message; } //try //{ // SqlScriptExecuter.UpdateSchemaVersion(prevVersion, connectionString, MigrationConfiguration.ProviderName, MigrationConfiguration.ServerType); //} //catch //{ // return "Error: rolled back from version " + currentVersionFromDatabase + " but unable to set previous version to " + prevVersion; //} return executedMigration + script.Replace("begin transaction", "").Replace("commit transaction", "") + Environment.NewLine + "current version is: " + prevVersion; } else { return "Error: migration file with the specified version does not exist. Command aborted. - current database version is: " + currentVersionFromDatabase; } } else { //if (prevVersion == null) //{ // return "Done: Prev version does not exist " + Environment.NewLine + " current database version is: " + currentVersionFromDatabase; //} //else //{ return "Error: migration file with the specified version does not exist. Command aborted. " + Environment.NewLine + " current database version is: " + currentVersionFromDatabase; //} } } else { return "Done: Prev version does not exist - current database version : " + currentVersionFromDatabase; } } catch (Exception ex) { return "Error:" + Environment.NewLine + ex.Message; } }
public string ProcessMigrateUp(string connectionString) { try { string script = ""; string currentVersionFromDatabase = SqlScriptExecuter.GetSchemaVersion(connectionString, MigrationConfiguration.ProviderName, MigrationConfiguration.ServerType); string nextVersion = GetNextVersion(currentVersionFromDatabase, MigrationConfiguration.migrationClassPath); if(!string.IsNullOrEmpty(nextVersion)) // if (nextVersion != null) { string migrationFilePath = MigrationFactory.GetMigrationFilePathForVersion(nextVersion, MigrationConfiguration.migrationClassPath); if (migrationFilePath != null) { MigrationFactory factory = MigrationFactory.GetFactoryForDatabaseType(MigrationConfiguration.ServerType); Migration migration = factory.GetMigration(migrationFilePath, MigrationConfiguration.migrationLibraryAssemblyPath); string version = MigrationFactory.GetVersionFromMigrationFilePath(migrationFilePath); DatabaseConnection db = new DatabaseConnection(connectionString, MigrationConfiguration.ProviderName, MigrationConfiguration.ServerType); string executedMigration = "Executed Migration Version " + version + " Up " + Environment.NewLine; try { script = migration.Up(db, nextVersion); } catch (Exception ex) { return "Error:" + ex.Message; } //try //{ // SqlScriptExecuter.UpdateSchemaVersion(nextVersion, connectionString, MigrationConfiguration.ProviderName, MigrationConfiguration.ServerType); //} //catch //{ // return "Error: changed from current database version " + currentVersionFromDatabase + " but unable to set next version to " + nextVersion; //} return executedMigration + script.Replace("begin transaction", "").Replace("commit transaction", "") + Environment.NewLine + "current version is: " + nextVersion; } else { return "Error: migration file with the specified version does not exist. Command aborted. " + Environment.NewLine + " current database version is: " + currentVersionFromDatabase; } } else { if (nextVersion == null) { return "Done: Next version does not exist " + Environment.NewLine + " current database version is: " + currentVersionFromDatabase; } else { return "Error: migration file with the specified version does not exist. Command aborted. " + Environment.NewLine + " current database version is: " + currentVersionFromDatabase; } } } catch (Exception ex) { return "Error:" + Environment.NewLine + ex.Message; } }
public string Up(DatabaseConnection conn) { throw new Exception("Locked Migration"); }