Ejemplo n.º 1
0
        internal void UpdateToInclude(IEnumerable <IMigrationMetadata> containedMigrations, IDbConnection connection, IDbTransaction transaction)
        {
            IDbCommandExecutor executor;

            using ((executor = _sqlDispatcher.CreateExecutor("CustomBootstrapping")) as IDisposable)
            {
                PersistedVersioning versioning = GetPersistedVersioning(connection, transaction, executor);
                versioning.UpdateToInclude(containedMigrations, connection, transaction, executor);
            }
        }
Ejemplo n.º 2
0
        /// <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);
        }