示例#1
0
        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);
            }
        }
示例#2
0
        internal static DbmsRelationTree LoadForeignKeys(this DbAccess dbAccess, string tableName)
        {
            DbmsRelationTree rootTable = new DbmsRelationTree(tableName);

            LoadForeignKeys(dbAccess, rootTable);

            return(rootTable);
        }
示例#3
0
        public JoinedTable NavigateForeignKeyTable(string foreignKeyBaseTable)
        {
            DbmsRelationTree baseTable = _fLoadForeignKeys(foreignKeyBaseTable);

            return(new JoinedTable(baseTable));
        }