public static SchemaComparisonResult Compare(this Database source, Database target, bool strict = false) { if (source == null) { throw new ArgumentNullException("source"); } if (target == null) { throw new ArgumentNullException("target"); } SchemaComparisonResult result = new SchemaComparisonResult(); result.Merge(CompareTables(source, target, strict)); result.Merge(CompareFunctions(source, target, strict)); result.Merge(CompareStoredProcedures(source, target, strict)); return result; }
public static SchemaComparisonResult Compare(this Database source, Database target, bool strict = false) { if (source == null) { throw new ArgumentNullException("source"); } if (target == null) { throw new ArgumentNullException("target"); } SchemaComparisonResult result = new SchemaComparisonResult(); result.Merge(CompareTables(source, target, strict)); result.Merge(CompareFunctions(source, target, strict)); result.Merge(CompareStoredProcedures(source, target, strict)); return(result); }
private static SchemaComparisonResult CompareTables(Database source, Database target, bool strict) { SchemaComparisonResult result = new SchemaComparisonResult(); var sourceTablesMissingInTarget = source.Tables.Where(x => !target.Tables.Any(y => y.Name == x.Name)); if (sourceTablesMissingInTarget.Count() > 0) { result.Inequalities.AddRange(sourceTablesMissingInTarget.Select(x => new SchemaComparisonInequality { ObjectName = x.Name, ObjectType = x.Type, InequalityType = SchemaComparisonInequalityTypes.MissingInTarget })); } if (strict) { var targetTablesMissingInSource = source.Tables.Where(x => !target.Tables.Any(y => y.Name == x.Name)); if (targetTablesMissingInSource.Count() > 0) { result.Inequalities.AddRange(targetTablesMissingInSource.Select(x => new SchemaComparisonInequality { ObjectName = x.Name, ObjectType = x.Type, InequalityType = SchemaComparisonInequalityTypes.MissingInSource })); } } var commonTables = source.Tables.Where(x => target.Tables.Exists(y => y.Name == x.Name)); foreach (var table in commonTables) { var targetTable = target.Tables.FirstOrDefault(x => x.Name == table.Name); if (targetTable == null) { continue; //Shouldnt be possible } result.Merge(CompareTable(table, targetTable, strict)); } return(result); }
private static SchemaComparisonResult CompareTables(Database source, Database target, bool strict) { SchemaComparisonResult result = new SchemaComparisonResult(); var sourceTablesMissingInTarget = source.Tables.Where(x => !target.Tables.Any(y => y.Name == x.Name)); if (sourceTablesMissingInTarget.Count() > 0) { result.Inequalities.AddRange(sourceTablesMissingInTarget.Select(x => new SchemaComparisonInequality { ObjectName = x.Name, ObjectType = x.Type, InequalityType = SchemaComparisonInequalityTypes.MissingInTarget })); } if (strict) { var targetTablesMissingInSource = source.Tables.Where(x => !target.Tables.Any(y => y.Name == x.Name)); if (targetTablesMissingInSource.Count() > 0) { result.Inequalities.AddRange(targetTablesMissingInSource.Select(x => new SchemaComparisonInequality { ObjectName = x.Name, ObjectType = x.Type, InequalityType = SchemaComparisonInequalityTypes.MissingInSource })); } } var commonTables = source.Tables.Where(x => target.Tables.Exists(y => y.Name == x.Name)); foreach (var table in commonTables) { var targetTable = target.Tables.FirstOrDefault(x => x.Name == table.Name); if (targetTable == null) { continue; //Shouldnt be possible } result.Merge(CompareTable(table, targetTable, strict)); } return result; }