コード例 #1
0
        public override void RunJob()
        {
            Logger.DebugFormat("begin restore data for module {0}", _module.ModuleName);
            SetStepsCount(_module.Tables.Count(t => !IgnoredTables.Contains(t.Name)));

            using (var connection = _factory.OpenConnection())
            {
                foreach (var table in _module.GetTablesOrdered().Where(t => !IgnoredTables.Contains(t.Name) && t.InsertMethod != InsertMethod.None))
                {
                    Logger.DebugFormat("begin restore table {0}", table.Name);

                    var transactionsCommited = 0;
                    var rowsInserted         = 0;
                    ActionInvoker.Try(
                        state =>
                        RestoreTable(connection.Fix(), (TableInfo)state, ref transactionsCommited,
                                     ref rowsInserted), table, 5,
                        onAttemptFailure: error => _columnMapper.Rollback(),
                        onFailure: error => { throw ThrowHelper.CantRestoreTable(table.Name, error); });

                    SetStepCompleted();
                    Logger.DebugFormat("{0} rows inserted for table {1}", rowsInserted, table.Name);
                }
            }

            Logger.DebugFormat("end restore data for module {0}", _module.ModuleName);
        }
コード例 #2
0
 private void DoDeleteModule(DbFactory dbFactory, IModuleSpecifics module)
 {
     InvokeInfo("begin delete data for module ({0})", module.ModuleName);
     int tablesCount = module.Tables.Count();
     int tablesProcessed = 0;
     using (var connection = dbFactory.OpenConnection(module.ConnectionStringName))
     {
         foreach (var table in module.GetTablesOrdered().Reverse().Where(t => !IgnoredTables.Contains(t.Name)))
         {
             ActionInvoker.Try(state =>
                 {
                     var t = (TableInfo)state;
                     module.CreateDeleteCommand(connection.Fix(), Tenant.TenantId, t).WithTimeout(120).ExecuteNonQuery();
                 }, table, 5, onFailure: error => { throw ThrowHelper.CantDeleteTable(table.Name, error); });
             SetStepProgress((int)((++tablesProcessed*100)/(double)tablesCount));
         }
     }
     InvokeInfo("end delete data for module ({0})", module.ModuleName);
 }
コード例 #3
0
        private void DoDeleteModule(DbFactory dbFactory, IModuleSpecifics module)
        {
            InvokeInfo("begin delete data for module ({0})", module.ModuleName);
            int tablesCount     = module.Tables.Count();
            int tablesProcessed = 0;

            using (var connection = dbFactory.OpenConnection(module.ConnectionStringName))
            {
                foreach (var table in module.GetTablesOrdered().Reverse().Where(t => !IgnoredTables.Contains(t.Name)))
                {
                    ActionInvoker.Try(state =>
                    {
                        var t = (TableInfo)state;
                        module.CreateDeleteCommand(connection.Fix(), Tenant.TenantId, t).WithTimeout(120).ExecuteNonQuery();
                    }, table, 5, onFailure: error => { throw ThrowHelper.CantDeleteTable(table.Name, error); });
                    SetStepProgress((int)((++tablesProcessed * 100) / (double)tablesCount));
                }
            }
            InvokeInfo("end delete data for module ({0})", module.ModuleName);
        }