예제 #1
0
        public TableDelta(Table expected, Table actual)
        {
            Missing   = expected.Where(x => actual.All(_ => _.Name != x.Name)).ToArray();
            Extras    = actual.Where(x => expected.All(_ => _.Name != x.Name)).ToArray();
            Matched   = expected.Where(x => actual.Any(a => Equals(a, x))).ToArray();
            Different =
                expected.Where(x => actual.HasColumn(x.Name) && !x.Equals(actual.ColumnFor(x.Name))).ToArray();

            _tableName = expected.Identifier;

            compareIndices(expected, actual);

            compareForeignKeys(expected, actual);
        }
예제 #2
0
        public TableDelta(Table expected, Table actual)
        {
            Missing   = expected.Where(x => actual.All(_ => _.Name != x.Name)).ToArray();
            Extras    = actual.Where(x => expected.All(_ => _.Name != x.Name)).ToArray();
            Matched   = expected.Where(x => actual.Any(a => Equals(a, x))).ToArray();
            Different =
                expected.Where(x => actual.HasColumn(x.Name) && !x.Equals(actual.ColumnFor(x.Name))).ToArray();

            _tableName = expected.Identifier;

            compareIndices(expected, actual);

            var missingFKs = expected.ForeignKeys.Where(x => !actual.ActualForeignKeys.Contains(x.KeyName));

            MissingForeignKeys.AddRange(missingFKs);
        }
예제 #3
0
        private void compareColumns(Table expected, Table actual, IEnumerable <TableColumn> changedColumns)
        {
            foreach (var expectedColumn in changedColumns)
            {
                var actualColumn = actual.ColumnFor(expectedColumn.Name);
                var actualType   = TypeMappings.ConvertSynonyms(actualColumn.Type);
                var expectedType = TypeMappings.ConvertSynonyms(expectedColumn.Type);

                // check for altered column type which can be auto converted
                if (actualType.EqualsIgnoreCase(expectedType) ||
                    !TypeMappings.CanAutoConvertType(actualType, expectedType))
                {
                    continue;
                }

                AlteredColumnTypes.Add(expectedColumn.AlterColumnTypeSql(expected));
                AlteredColumnTypeRollbacks.Add(actualColumn.AlterColumnTypeSql(actual));
            }
        }