/// <summary> /// Executes the migration step and updates the versioning information in one transaction. /// </summary> public void Execute(IVersioning versioning) { if (versioning == null) throw new ArgumentNullException("versioning"); DateTime start = DateTime.Now; using (IDbConnection connection = _connectionFactory.OpenConnection(_connectionInfo)) { Debug.Assert(connection.State == ConnectionState.Open); using (IDbTransaction transaction = _connectionInfo.SupportsTransactions ? connection.BeginTransaction() : null) { IDbCommandExecutor executor; using ((executor = _sqlDispatcher.CreateExecutor(string.Format(CultureInfo.InvariantCulture, "Migration.{0}.{1}", _metadata.ModuleName, _metadata.Timestamp))) as IDisposable) { Execute(connection, transaction, _metadata.Direction, executor); // update versioning versioning.Update(_metadata, connection, transaction, executor); } if (transaction != null) { transaction.Commit(); } } } Log.Verbose(LogCategory.Performance, "Migration of module '{0}' to {1}{2} took {3}s", _metadata.ModuleName, _metadata.Timestamp, !string.IsNullOrEmpty(_metadata.Tag) ? string.Format(CultureInfo.CurrentCulture, " '{0}'", _metadata.Tag) : string.Empty, (DateTime.Now - start).TotalSeconds); }
public void Execute(IRuntimeConfiguration configuration, IVersioning versioning) { if (versioning == null) { throw new ArgumentNullException("versioning"); } DateTime start = DateTime.Now; long timestamp = GetTimestamp(); string tag = GetTag(); using (IDbConnection connection = configuration.OpenConnection()) { Debug.Assert(connection.State == ConnectionState.Open); using (IDbTransaction transaction = configuration.ConnectionInfo.SupportsTransactions ? connection.BeginTransaction() : null) { IDbCommandExecutor executor; using ((executor = configuration.SqlDispatcher.CreateExecutor(string.Format(CultureInfo.InvariantCulture, "Migration.{0}.{1}", Metadata.ModuleName, timestamp))) as IDisposable) { try { Execute(configuration.ProviderInfo, connection, transaction, Metadata.Direction, executor); } catch { Log.Error("An non-recoverable error occurred in migration '{0}'{1}{2} while executing {3}.", timestamp, Metadata.ModuleName != MigrationExportAttribute.DefaultModuleName ? " in module '" + Metadata.ModuleName + "'" : string.Empty, tag, Metadata.Direction); throw; } // update versioning versioning.Update(Metadata, connection, transaction, executor); } if (transaction != null) { transaction.Commit(); } } } Log.Verbose(LogCategory.Performance, "Migration of module '{0}' to {1}{2} took {3}s", Metadata.ModuleName, timestamp, tag, (DateTime.Now - start).TotalSeconds); }
public void Execute(IRuntimeConfiguration configuration, IVersioning versioning) { if (versioning == null) throw new ArgumentNullException("versioning"); DateTime start = DateTime.Now; long timestamp = GetTimestamp(); string tag = GetTag(); using (IDbConnection connection = configuration.OpenConnection()) { Debug.Assert(connection.State == ConnectionState.Open); using (IDbTransaction transaction = configuration.ConnectionInfo.SupportsTransactions ? connection.BeginTransaction() : null) { IDbCommandExecutor executor; using ((executor = configuration.SqlDispatcher.CreateExecutor(string.Format(CultureInfo.InvariantCulture, "Migration.{0}.{1}", Metadata.ModuleName, timestamp))) as IDisposable) { try { Execute(configuration.ProviderInfo, connection, transaction, Metadata.Direction, executor); } catch { Log.Error("An non-recoverable error occurred in migration '{0}'{1}{2} while executing {3}.", timestamp, Metadata.ModuleName != MigrationExportAttribute.DefaultModuleName ? " in module '" + Metadata.ModuleName + "'" : string.Empty, tag, Metadata.Direction); throw; } // update versioning versioning.Update(Metadata, connection, transaction, executor); } if (transaction != null) { transaction.Commit(); } } } Log.Verbose(LogCategory.Performance, "Migration of module '{0}' to {1}{2} took {3}s", Metadata.ModuleName, timestamp, tag, (DateTime.Now - start).TotalSeconds); }
/// <summary> /// Executes the migration step and updates the versioning information in one transaction. /// </summary> public void Execute(IVersioning versioning) { if (versioning == null) { throw new ArgumentNullException("versioning"); } DateTime start = DateTime.Now; using (IDbConnection connection = _connectionFactory.OpenConnection(_connectionInfo)) { Debug.Assert(connection.State == ConnectionState.Open); using (IDbTransaction transaction = _connectionInfo.SupportsTransactions ? connection.BeginTransaction() : null) { IDbCommandExecutor executor; using ((executor = _sqlDispatcher.CreateExecutor(string.Format(CultureInfo.InvariantCulture, "Migration.{0}.{1}", _metadata.ModuleName, _metadata.Timestamp))) as IDisposable) { Execute(connection, transaction, _metadata.Direction, executor); // update versioning versioning.Update(_metadata, connection, transaction, executor); } if (transaction != null) { transaction.Commit(); } } } Log.Verbose(LogCategory.Performance, "Migration of module '{0}' to {1}{2} took {3}s", _metadata.ModuleName, _metadata.Timestamp, !string.IsNullOrEmpty(_metadata.Tag) ? string.Format(CultureInfo.CurrentCulture, " '{0}'", _metadata.Tag) : string.Empty, (DateTime.Now - start).TotalSeconds); }