public string GetPathLabel(string table) { string result = ""; TablePath path = paths[table]; while (path != null) { result = T.AppendTo(path.referencedTable.objectName, result, "."); path = path.pathThrough; } return(result); }
void GetAccessibleTablesThroughReference(TablePath path) { DbTable t = table; foreach (DbTableConstraint constraint in t.references.Each()) { if (constraint.isForeignKey || constraint.type == "inferred") { if (!paths.ContainsKey(constraint.dbTable.objectName)) { if (constraint.dbTable != table) { TablePath p = new TablePath(constraint, path, true); paths.Add(constraint.dbTable.objectName, p); // GetAccessibleTablesThroughReference(p); } } } } }
void GetAccessibleTables(TablePath path) { DbTable t = path == null ? table : path.referencedTable; foreach (DbTableConstraint constraint in t.constraints.Values) { if (constraint.isForeignKey || constraint.type == "inferred") { if (!paths.ContainsKey(constraint.referencedTable.objectName)) { if (constraint.referencedTable != table) { TablePath p = new TablePath(constraint, path); paths.Add(constraint.referencedTable.objectName, p); GetAccessibleTables(p); } } } } }
public TablePath(DbTableConstraint c, TablePath p, bool r = false) { constraint = c; isReference = r; pathThrough = p; }