private static void ProcessFKBadTypeCommand(string args) { if (args == "") { Console.WriteLine(NO_TABLE_SELECTED); return; } IList <string> errors; IList <DatabaseObject> tables = GetTablesFromArgs(args, out errors); if (errors.Count > 0) { foreach (string error in errors) { Console.WriteLine(error); } return; } try { ISet <DatabaseObject> tablesWithoutForeignKeys = new HashSet <DatabaseObject>(tables); IList <ForeignKey> foreignKeys = new List <ForeignKey>(); foreach (DatabaseObject table in tables) { foreach (DependencyEdge edge in Optimizer.Instance.DependencyGraph[table].ParentEdges) { foreignKeys.Add(edge.ForeignKey); } } IDictionary <ForeignKey, int> foreignKeySizes = _databaseOperations.GetForeignKeySize(foreignKeys); foreach (ForeignKey foreignKey in foreignKeys) { Console.WriteLine($"Table: {foreignKey.Table.NameWithSchemaBrackets}"); Console.WriteLine($"Foreign key: {foreignKey.Name}"); tablesWithoutForeignKeys.Remove(foreignKey.Table); int size = foreignKeySizes[foreignKey]; foreach (IList <string> infoPair in _optimizer.EvaluateForeignKeyDataType(foreignKey, size)) { if (infoPair.Count > 1) { Console.WriteLine(string.Join(" ", infoPair)); } else { Console.WriteLine(infoPair[0]); } } Console.WriteLine(); } if (foreignKeys.Count == 0) { Console.WriteLine("All tables are without foreign keys"); return; } else if (tablesWithoutForeignKeys.Count > 0) { Console.WriteLine($"These tables are without foreign keys: {string.Join(", ", tablesWithoutForeignKeys)}"); return; } } catch (DatabaseException exc) { Debug.WriteLine(exc); Console.WriteLine("Error: Foreign key sizes cannot be loaded"); return; } }