public String ConstruirSqlConsultarRegistros(Tabela tabela) { String sql = "select "; String joins = ""; foreach (Coluna c in tabela.Colunas.Where(ee => ee.Visivel || ee.PrimaryKey).OrderBy(ee => ee.Ordem)) { if (tabela.Relacoes.Where(ee => ee.Tabela_Pai != tabela.Nome && ee.Coluna.Equals(c.Nome)).Count() == 0) { sql += tabela.Nome + "." + c.Nome + ", "; } else { Relacao r = tabela.Relacoes.Where(ee => ee.Tabela_Pai != tabela.Nome && ee.Coluna.Equals(c.Nome)).Single(); joins += " inner join " + r.Tabela_Pai + " on " + r.Tabela_Pai + "." + r.Campo_Pai + " = " + tabela.Nome + "." + r.Coluna; sql += r.Tabela_Pai + "." + r.Nome_Pai + " as " + c.Nome + ", "; } } sql = sql.Substring(0, sql.Length - 2); sql += " from " + tabela.Nome + joins; if (tabela.Colunas.Count(ee => ee.Equals("dm_situacao")) > 0) { sql += " where dm_situacao = 1"; } return(sql); }
public Tabela PreencherRelacao(Tabela t) { foreach (Coluna c in t.Colunas) { foreach (tb_relacao r in Entidades.tb_relacao.Where(ee => ee.col_nome.Equals(c.Nome) && ee.dm_situacao.Value)) { Relacao nova = new Relacao(); nova.Coluna = r.col_nome; nova.Campo_Pai = r.pai_campo; nova.Nome_Pai = r.pai_nome; nova.Tabela_Pai = r.pai_tabela; nova.auto_relacionamento = r.dm_auto_relacionamento.Value; t.Relacoes.Add(nova); } } return(t); }