/// <summary> /// Métodos que retorna os relacionamentos /// </summary> /// <param name="tabelas"></param> /// <param name="relacionamentos"></param> public static void RetornaDetalhesRelacionamentos(Visao.BarraDeCarregamento barra, List <DAO.MDN_Table> tabelas, ref List <Model.Relacionamento> relacionamentos) { foreach (DAO.MDN_Table table in tabelas) { string sentenca = " pragma foreign_key_list(" + table.Table_Name + ")"; DbDataReader reader = DataBase.Connection.Select(sentenca); while (reader.Read()) { barra.AvancaBarra(1); string constraintName = string.Empty; string tabelaOrigem = table.Table_Name; string tabelaDestino = reader["table"].ToString().ToUpper(); string campoOrigem = reader["from"].ToString(); string campoDestino = reader["to"].ToString(); Model.Relacionamento r = new Model.Relacionamento(); r.constraintName = constraintName; r.tabelaDestino = tabelaDestino; r.tabelaOrigem = tabelaOrigem; r.campoDestino = campoDestino; r.campoOrigem = campoOrigem; relacionamentos.Add(r); } reader.Close(); } }
/// <summary> /// Método que retorna os detalhes de todos os relacionamentos /// </summary> /// <param name="barra"></param> /// <param name="relacionamentos"></param> public static void RetornaDetalhesRelacionamentos(Visao.BarraDeCarregamento barra, ref List <Model.Relacionamento> relacionamentos) { string sentenca = @" SELECT f.name constraint_name ,OBJECT_NAME(f.parent_object_id) referencing_table_name ,COL_NAME(fc.parent_object_id, fc.parent_column_id) referencing_column_name ,OBJECT_NAME (f.referenced_object_id) referenced_table_name ,COL_NAME(fc.referenced_object_id, fc.referenced_column_id) referenced_column_name FROM sys.foreign_keys AS f INNER JOIN sys.foreign_key_columns AS fc ON f.object_id = fc.constraint_object_id ORDER BY f.name"; DbDataReader reader = DataBase.Connection.Select(sentenca); while (reader.Read()) { barra.AvancaBarra(1); string constraintName = reader["constraint_name"].ToString(); string tabelaOrigem = reader["referencing_table_name"].ToString(); string tabelaDestino = reader["referenced_table_name"].ToString().ToUpper(); string campoOrigem = reader["referencing_column_name"].ToString(); string campoDestino = reader["referenced_column_name"].ToString(); Model.Relacionamento r = new Model.Relacionamento(); r.constraintName = constraintName; r.tabelaDestino = tabelaDestino; r.tabelaOrigem = tabelaOrigem; r.campoDestino = campoDestino; r.campoOrigem = campoOrigem; relacionamentos.Add(r); } reader.Close(); }