public ValidationResult ValidateSchema(Dialect dialect, DatabaseMetadata databaseMetadata) { _configuration.BuildMappings(); var mappings = _configuration.CreateMappings(_dialect); var mapping = _configuration.BuildMapping(); var result = new ValidationResult(); try { var catalog = PropertiesHelper.GetString("default_catalog", _configuration.Properties, null); var schema = PropertiesHelper.GetString("default_schema", _configuration.Properties, null); foreach (var table in mappings.IterateTables) { if (!table.IsPhysicalTable || !Configuration.IncludeAction(table.SchemaActions, SchemaAction.Validate)) { continue; } var tableMetadata = databaseMetadata.GetTableMetadata(table.Name, table.Schema ?? schema, table.Catalog ?? catalog, table.IsQuoted); if (tableMetadata == null) { result.MissingTables.Add(table); } else { foreach (var column in table.ColumnIterator) { var columnMetadata = tableMetadata.GetColumnMetadata(column.Name); if (columnMetadata == null) { result.AddMissingColumn(table, column); } if (!column.GetSqlType(dialect, mapping).ToLower().StartsWith(columnMetadata.TypeName.ToLower())) { result.AddInvalidColumn(table, column); } } } } } catch (Exception ex) { LogHelper.Error <SchemaChangeValidator>(ex.Message, ex); result = new ValidationResult(ex); } return(result); }
public ValidationResult ValidateSchema(Dialect dialect, DatabaseMetadata databaseMetadata) { _configuration.BuildMappings(); var mappings = _configuration.CreateMappings(_dialect); var mapping = _configuration.BuildMapping(); var result = new ValidationResult(); try { var catalog = PropertiesHelper.GetString("default_catalog", _configuration.Properties, null); var schema = PropertiesHelper.GetString("default_schema", _configuration.Properties, null); foreach (var table in mappings.IterateTables) { if (!table.IsPhysicalTable || !Configuration.IncludeAction(table.SchemaActions, SchemaAction.Validate)) continue; var tableMetadata = databaseMetadata.GetTableMetadata(table.Name, table.Schema ?? schema, table.Catalog ?? catalog, table.IsQuoted); if (tableMetadata == null) { result.MissingTables.Add(table); } else { foreach (var column in table.ColumnIterator) { var columnMetadata = tableMetadata.GetColumnMetadata(column.Name); if (columnMetadata == null) { result.AddMissingColumn(table, column); } if (!column.GetSqlType(dialect, mapping).ToLower().StartsWith(columnMetadata.TypeName.ToLower())) { result.AddInvalidColumn(table, column); } } } } } catch (Exception ex) { LogHelper.Error<SchemaChangeValidator>(ex.Message, ex); result = new ValidationResult(ex); } return result; }