Tenho uma classe com as propriedades (nome, tipo , arquivo , setor). quero fazer um filtro onde o front me enviara um desses ou todos parametros via json e executarei um select de acordo com os parametros que receberei. Pra isso criei um dicionario com chave e valor e montei uma string sql atraves de um loop acrescentando os valores desse dicionario na string. ou seja: exemplo: ComandoSql = @"select * from documento where "; no loop vou acrescentando os parametros do where : exemplo: ComandoSql = ComandoSql + chave + "=" + valor ao final, a string sql podera ficar assim: select * from documento where nome_documento=quertt and id_tipo=1 and id_arquivo =1 and id_setor=1
apos o lopp eu utilizo o contexto.minhaentidade.fromsql(ComandoSql) e ele me retorna esse erro do banco dizendo que a column nao existe. levando em consideração que as propriedades da minha entidade nao tem os mesmos nomes da colunas da tabela, acredito que o erro está ai. Mas como posso resolver esse problema?
insira seu código aqui
public IEnumerable Filtro(DocumentosModel doc)
Dictionary<string, string> listaDocumento = new Dictionary<string, string>();
listaDocumento.Add("nome_documento", doc.NomeDocumento);
listaDocumento.Add("id_tipo", Convert.ToString(doc.FkTipo));
listaDocumento.Add("id_arquivo", Convert.ToString(doc.FkArquivo));
listaDocumento.Add("id_setor", Convert.ToString(doc.FkSetor));
ComandoSql = @"select * from documento where ";
foreach (KeyValuePair<string, string> x in listaDocumento)
{
var chave = x.Key;
var valor = x.Value;
if (valor != null)
{
CampoValido ++;
if (CampoValido > 1)
{
ComandoSql = ComandoSql + " and ";
}
ComandoSql = ComandoSql + chave + "=" + valor ;
}
}
var consulta = contexto.documentos.FromSql(ComandoSql);
return consulta;
}