public void Run(params IMigrationTask[] tasks) { if (tasks.IsNullOrEmpty()) { return; } using (var t = _db.BeginTransaction()) { foreach (var task in tasks) { if (task.NextVersion == null) { _logger.Info("Installing database schema '{1}' with version {0}", task.CurrentVersion, task.SchemaName); } else { _logger.Info("Executing '{2}' migration from version {0} to version {1}", task.CurrentVersion, task.NextVersion, task.SchemaName); } task.Execute(_db); } t.Commit(); } }
private void UpdateSelf() { var migrator = new SchemaMigrationExecutor(_runner, GetMigratorTasks(), SchemaName); using (var t = _db.BeginTransaction()) { if (!_db.DatabaseTools.TableExists(TableName)) { migrator.InstallSchema(); AppendVersion(SchemaName, migrator.LatestVersionAvailable); } else { var latest = GetInstalledVersion(SchemaName); if (latest.IsNullOrEmpty()) { migrator.InstallSchema(); AppendVersion(SchemaName, migrator.LatestVersionAvailable); } else { if (latest != migrator.LatestVersionAvailable) { migrator.MigrateToLatestFrom(latest); AppendVersion(SchemaName, migrator.LatestVersionAvailable); } } } t.Commit(); } }
public void ExecuteDDL() { using (var t = _db.BeginTransaction()) { _db.ExecuteCommand(GetSql()); t.Commit(); } }