private void HandleDeploymentHistory(string schemaName, string contextKey) { var factory = DbProviderFactories.GetFactory(m_ConnectionInfoBuilder.ProviderName); using (var connection = factory.CreateConnection()) { connection.ConnectionString = m_ConnectionInfoBuilder.BuildConnectionString( m_Config.Database, m_Config.AuthMode, m_Config.SqlLogin, m_Config.SqlPassword); connection.Open(); Log.Information( "Creating {contextKey} deployment history in {schemaName} schema " + "on {endPointServer}\\{endpointDatabase} using {targetAssemblyPath}.", contextKey, schemaName, m_Config.Database.ServerName, m_Config.Database.DatabaseName, m_Config.TargetAssemblyPath); DeploymentHistory.Create( contextKey, GetVersion().ToString(), m_Config.TargetAssemblyPath, connection, schemaName); connection.Close(); } }
private void SetupDeploymentHistory(string schemaName) { Log.Information( "Adding Deployment History table for schema {schemaName} on {endPointServer}\\{endpointDatabase} if it does not exist", schemaName, m_Config.Database.ServerName, m_Config.Database.DatabaseName); var factory = DbProviderFactories.GetFactory(m_ConnectionInfoBuilder.ProviderName); using (var connection = factory.CreateConnection()) { connection.ConnectionString = m_ConnectionInfoBuilder.BuildConnectionString( m_Config.Database, m_Config.AuthMode, m_Config.SqlLogin, m_Config.SqlPassword); connection.Open(); DeploymentHistory.Setup(connection, schemaName); connection.Close(); } }
private Assembly LazyLoadDeployedAssembly() { var isOverrideDeploymentHistory = !string.IsNullOrEmpty(m_Config.DeployedAssemblyOverridePath); if (isOverrideDeploymentHistory) { Log.Information( "Override deployed assembly path {overridePath} specified. Deployment History will not be used!", m_Config.DeployedAssemblyOverridePath); return(m_AssemblyLoader.Load(MigrationsSource.Deployed, m_Config.DeployedAssemblyOverridePath)); } if (m_Config.Mode == DeploymentMode.InitializeOnly || m_Config.Mode == DeploymentMode.SeedOnly) { return(null); } string deploymentHistoryAssemblyPath = null; var targetContextKeySchema = GetContextKeySchema(TargetAssembly, m_Config.MigrationConfig.Type); if (targetContextKeySchema == null) { Log.Warning( "Failed to determine context key and schema name for config type {configType} in target assembly {assemblyPath}. " + "The cause is most likely an attempt to migrate downward to a version in which {configType} does not exist. " + "A deployed assembly override must be specified in these cases. Downward migrations will either not occur or will fail.", m_Config.MigrationConfig.Type, TargetAssembly.CodeBase); return(null); } if (!GetIsTargetDatabaseExists()) { Log.Debug( "Database {endpointDatabase} does not exist on {endPointServer}. Deployment History will not be used.", m_Config.Database.DatabaseName, m_Config.Database.ServerName); return(null); } var factory = DbProviderFactories.GetFactory(m_ConnectionInfoBuilder.ProviderName); using (var connection = factory.CreateConnection()) { connection.ConnectionString = m_ConnectionInfoBuilder.BuildConnectionString( m_Config.Database, m_Config.AuthMode, m_Config.SqlLogin, m_Config.SqlPassword); connection.Open(); Log.Debug( "Extracting current deployment history assemblies " + "for {contextKey} in {schemaName} schema on {endPointServer}\\{endpointDatabase} to {extractPath}.", targetContextKeySchema.ContextKey, targetContextKeySchema.SchemaName, m_Config.Database.ServerName, m_Config.Database.DatabaseName, m_Config.DeploymentHistoryExtractPath); deploymentHistoryAssemblyPath = DeploymentHistory.ExtractCurrent( targetContextKeySchema.ContextKey, connection, targetContextKeySchema.SchemaName, m_Config.DeploymentHistoryExtractPath); connection.Close(); } if (string.IsNullOrEmpty(deploymentHistoryAssemblyPath)) { Log.Warning("No {targetSchemaName} Deployment History available for {targetContextKey} on {endPointServer}\\{endpointDatabase}.", targetContextKeySchema.SchemaName, targetContextKeySchema.ContextKey, m_Config.Database.ServerName, m_Config.Database.DatabaseName); return(null); } return(m_AssemblyLoader.Load(MigrationsSource.Deployed, deploymentHistoryAssemblyPath)); }