UndoDataMigrationScripts() 공개 메소드

public UndoDataMigrationScripts ( List createdTags ) : void
createdTags List
리턴 void
예제 #1
0
        public void ExecuteGenerators(bool deployDatabaseOnly)
        {
            _deployPackagesLogger.Trace("SQL connection string: " + SqlUtility.MaskPassword(SqlUtility.ConnectionString));
            ValidateDbConnection();

            _deployPackagesLogger.Trace("Preparing Rhetos database.");
            PrepareRhetosDatabase();

            _deployPackagesLogger.Trace("Parsing DSL scripts.");
            int dslModelConceptsCount = _dslModel.Concepts.Count();

            _deployPackagesLogger.Trace("Application model has " + dslModelConceptsCount + " statements.");

            if (deployDatabaseOnly)
            {
                _deployPackagesLogger.Info("Skipped code generators (DeployDatabaseOnly).");
            }
            else
            {
                _deployPackagesLogger.Trace("Compiling DOM assembly.");
                int generatedTypesCount = _domGenerator.Assembly.GetTypes().Length;
                if (generatedTypesCount == 0)
                {
                    _deployPackagesLogger.Error("WARNING: Empty assembly is generated.");
                }
                else
                {
                    _deployPackagesLogger.Trace("Generated " + generatedTypesCount + " types.");
                }

                var generators = GetSortedGenerators();
                foreach (var generator in generators)
                {
                    _deployPackagesLogger.Trace("Executing " + generator.GetType().Name + ".");
                    generator.Generate();
                }
                if (!generators.Any())
                {
                    _deployPackagesLogger.Trace("No additional generators.");
                }
            }

            _deployPackagesLogger.Trace("Cleaning old migration data.");
            _databaseCleaner.RemoveRedundantMigrationColumns();
            _databaseCleaner.RefreshDataMigrationRows();

            _deployPackagesLogger.Trace("Executing data migration scripts.");
            var dataMigrationReport = _dataMigration.ExecuteDataMigrationScripts();

            _deployPackagesLogger.Trace("Upgrading database.");
            try
            {
                _databaseGenerator.UpdateDatabaseStructure();
            }
            catch (Exception ex)
            {
                try
                {
                    _dataMigration.UndoDataMigrationScripts(dataMigrationReport.CreatedTags);
                }
                catch (Exception undoException)
                {
                    _deployPackagesLogger.Error(undoException.ToString());
                }
                ExceptionsUtility.Rethrow(ex);
            }

            _deployPackagesLogger.Trace("Deleting redundant migration data.");
            _databaseCleaner.RemoveRedundantMigrationColumns();
            _databaseCleaner.RefreshDataMigrationRows();

            _deployPackagesLogger.Trace("Uploading DSL scripts.");
            UploadDslScriptsToServer();
        }