private static void LoadForeignKeys(this DbAccess dbAccess, DbmsRelationTree foreignKeyBaseTable) { const string sp = "GET_FOREIGN_KEY"; DbParameter outTable_Schema = null; DbParameter outTable_Name = null; DbParameter outQualified_Name = null; dbAccess.ExecuteReader(GetProcedure(sp), parameters => { parameters.Add("inTable_Name", foreignKeyBaseTable.TableName); outTable_Schema = parameters.AddOutput("outTable_Schema", 64); outTable_Name = parameters.AddOutput("outTable_Name", 64); outQualified_Name = parameters.AddOutput("outQualified_Name", 128); }, reader => { foreignKeyBaseTable.AddForeignKeyColumn( reader.Field <string>("CONSTRAINT_NAME"), reader.Field <string>("FOREIGN_KEY_COLUMN"), reader.Field <bool>("FOREIGN_KEY_NULLABLE"), reader.Field <string>("REFERENCED_TABLE"), reader.Field <string>("REFERENCED_COLUMN"), reader.Field <bool>("REFERENCED_NULLABLE")); }); foreignKeyBaseTable.Schema = outTable_Schema.Parameter <string>(); foreignKeyBaseTable.TableName = outTable_Name.Parameter <string>(); foreignKeyBaseTable.QualifiedName = outQualified_Name.Parameter <string>(); foreignKeyBaseTable.Columns = ListTableColumns(dbAccess, foreignKeyBaseTable.QualifiedName).ToArray(); foreach (DbmsForeignKey fk in foreignKeyBaseTable.ForeignKeys) { LoadForeignKeys(dbAccess, fk.PrimaryUniqueKeyBaseTable); } }
internal static DbmsRelationTree LoadForeignKeys(this DbAccess dbAccess, string tableName) { DbmsRelationTree rootTable = new DbmsRelationTree(tableName); LoadForeignKeys(dbAccess, rootTable); return(rootTable); }
public JoinedTable NavigateForeignKeyTable(string foreignKeyBaseTable) { DbmsRelationTree baseTable = _fLoadForeignKeys(foreignKeyBaseTable); return(new JoinedTable(baseTable)); }