Esempio n. 1
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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
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);
        }