private void _LoadAll(string query1, string query2) { NpgsqlConnection cn = null; try { cn = ConnectionHelper.CreateConnection(this.dbRoot, this.Table.Database.Name); DataTable metaData1 = new DataTable(); DataTable metaData2 = new DataTable(); NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(query1, cn); adapter.Fill(metaData1); adapter = new NpgsqlDataAdapter(query2, cn); adapter.Fill(metaData2); DataRowCollection rows = metaData2.Rows; int count = rows.Count; for (int i = 0; i < count; i++) { metaData1.ImportRow(rows[i]); } PopulateArrayNoHookup(metaData1); if (metaData1.Rows.Count > 0) { string catalog = this.Table.Database.Name; string schema; string table; string[] cols = null; string q; string query = "SELECT a.attname as COLUMN from pg_attribute a, pg_class c, pg_namespace n " + "WHERE a.attrelid = c.oid AND c.relnamespace = n.oid " + "AND a.attnum > 0 AND NOT a.attisdropped AND c.relkind = 'r' "; foreach (ForeignKey key in this) { //------------------------------------------------ // Primary //------------------------------------------------ cols = ParseColumns(key._row["PK_COLS"] as string); schema = key._row["PK_TABLE_SCHEMA"] as string; table = key._row["PK_TABLE_NAME"] as string; q = query; q += "AND n.nspname = '" + schema + "' AND c.relname = '" + table + "' AND attnum IN("; for (int i = 0; i < cols.GetLength(0); i++) { if (i > 0) { q += ','; } q += cols[i].ToString(); } q += ") ORDER BY attnum;"; DataTable metaData = new DataTable(); adapter = new NpgsqlDataAdapter(q, cn); adapter.Fill(metaData); for (int i = 0; i < cols.GetLength(0); i++) { key.AddForeignColumn(catalog, "", table, metaData.Rows[i]["COLUMN"] as string, true); } //------------------------------------------------ // Foreign //------------------------------------------------ cols = ParseColumns(key._row["FK_COLS"] as string); schema = key._row["FK_TABLE_SCHEMA"] as string; table = key._row["FK_TABLE_NAME"] as string; q = query; q += "AND n.nspname = '" + schema + "' AND c.relname = '" + table + "' AND attnum IN("; for (int i = 0; i < cols.GetLength(0); i++) { if (i > 0) { q += ','; } q += cols[i].ToString(); } q += ") ORDER BY attnum;"; metaData = new DataTable(); adapter = new NpgsqlDataAdapter(q, cn); adapter.Fill(metaData); for (int i = 0; i < cols.GetLength(0); i++) { key.AddForeignColumn(catalog, "", table, metaData.Rows[i]["COLUMN"] as string, false); } } } } catch {} cn.Close(); }