terça-feira, março 20, 2012

LINQ to Entities does not recognize the method 'Int32 ToInt32(System.String)' method, and this method cannot be translated into a store expression.

Ontem passei por um erro utilizando o Linq to Entity, ao fazer uma consulta simples, estava ocorrendo o seguinte erro:  LINQ to Entities does not recognize the method 'Int32 ToInt32(System.String)' method, and this method cannot be translated into a store expression.


Código com erro:


            dbGestCom db = new dbGestCom();
            var chamados = (from c in db.CHAMADO
                            where c.IDEVENTO == Convert.ToInt32(idevento);
                            select new Chamado()
                            {
                                IDChamado = c.IDCHAMADO,
                                IDCliente = c.IDCLIENTE,
                                RazaoSocial = c.CLIENTE.RAZAOSOCIAL,
                                IDEvento = c.IDEVENTO,
                                Descricao = c.EVENTOS.DESCRICAO,
                                Titulo = c.TITULO,
                                Solicitacao = c.SOLICITACAO,
                                Solucao = c.SOLUCAO,
                                Dt = c.DT
                            });
O erro está na linha destacada em vermelho, de alguma forma o Linq não consegue converter o valor da variável "idevento" para um Int32 gerando assim o erro, para corrigir esse problema foi necessário converter a variável antes de utilizar na consulta.

Código corrigido:

            int id = Convert.ToInt32(idevento);
            dbGestCom db = new dbGestCom();
            var chamados = (from c in db.CHAMADO
                            where c.IDEVENTO == id
                            select new Chamado()
                            {
                                IDChamado = c.IDCHAMADO,
                                IDCliente = c.IDCLIENTE,
                                RazaoSocial = c.CLIENTE.RAZAOSOCIAL,
                                IDEvento = c.IDEVENTO,
                                Descricao = c.EVENTOS.DESCRICAO,
                                Titulo = c.TITULO,
                                Solicitacao = c.SOLICITACAO,
                                Solucao = c.SOLUCAO,
                                Dt = c.DT
                            });

Pronto, feito isso sua consulta irá funcionar corretamente.

Nenhum comentário:

Postar um comentário