Galen.Ci.EntityFramework.DbDeploymentManager.Deploy C# (CSharp) Method

Deploy() public method

public Deploy ( ) : void
return void
        public void Deploy()
        {
            ValidateConfiguredAssemblies();

            var isPerformInitialization = m_Config.Mode == DeploymentMode.InitializeOnly ||
                                          m_Config.Mode == DeploymentMode.InitializeOrMigrate;

            var isPerformMigration = m_Config.Mode != DeploymentMode.InitializeOnly &&
                                     m_Config.Mode != DeploymentMode.SeedOnly;

            TransactionScope multiMigrationTxScope = null;
            try
            {
                MigrationExecutionInfo pendingMigration = null;
                if (isPerformMigration)
                {
                    pendingMigration = GetPendingMigration();
                    isPerformMigration = (pendingMigration != null);
                }

                var isInitializationPerformed = isPerformInitialization && HandleDatabaseInitialization();

                if (isPerformMigration && pendingMigration.Migration.ContextKeySchema != null)
                {
                    SetupDeploymentHistory(pendingMigration.Migration.ContextKeySchema.SchemaName);
                }
                else if (isPerformInitialization)
                {
                    var contextKeySchema = GetTargetAssemblyContextKeySchema();
                    SetupDeploymentHistory(contextKeySchema.SchemaName);
                }

                if (m_Config.RunServerMigrationsInTransaction)
                {
                    multiMigrationTxScope = new TransactionScope(TransactionScopeOption.Required);
                }

                if (isPerformMigration)
                {
                    var isMigrationPerformed = HandleDatabaseMigration(pendingMigration);
                    if (isMigrationPerformed)
                    {
                        HandleDeploymentHistory(
                            pendingMigration.Migration.ContextKeySchema.SchemaName,
                            pendingMigration.Migration.ContextKeySchema.ContextKey);
                    }
                }
                else if (isInitializationPerformed)
                {
                    var contextKeySchema = GetTargetAssemblyContextKeySchema();
                    HandleDeploymentHistory(contextKeySchema.SchemaName, contextKeySchema.ContextKey);
                }

                multiMigrationTxScope?.Complete();

                if (!isInitializationPerformed)
                {
                    HandleDataSeeding();
                }
            }
            finally
            {
                multiMigrationTxScope.SafeDispose();
            }
        }