private static IEnumerable <object> ColumnReferences(UnpredictableColumnSource.UnpredictableColumn column, List <SnapshotTableDifferences> tableDiffs) { foreach (var refCol in column.ReferencingColumns) { var tableForValues = tableDiffs.SingleOrDefault(d => d.TableDefinition.TableName == refCol.SourceTable.TableName); if (tableForValues != null) { foreach (var value in ColumnValues(column.Column.Name, tableForValues)) { yield return(value); } } } }
private static ColumnValueSet ColumnValues(UnpredictableColumnSource table, List <SnapshotTableDifferences> tableDiffs, UnpredictableColumnSource.UnpredictableColumn column) { var tableForValues = tableDiffs.SingleOrDefault(d => d.TableDefinition.TableName == table.Table.TableName); List <object> values = null; if (tableForValues != null) { values = ColumnValues(column.Column.Name, tableForValues).ToList(); } var references = ColumnReferences(column, tableDiffs).Distinct().ToList(); return(new ColumnValueSet(table.Table, column.Column, values ?? new List <object>(), references ?? new List <object>())); }