none
ERRO conversão de data RRS feed

  • Pergunta

  • tenho uma app que contem um BD mySQL e utiliza o EF 4.1. estou tentando fazer uma comparação com a data armazenada no BD e a data atual:

    public List<mc_agenda> Listar3Agendas()
    {
      DateTime atual = DateTime.Now;
      return entities.mc_agenda.Where(a => Convert.ToDateTime(a.dt_compromisso).Date >= atual.Date).Take(3).ToList();
    }

    mas o seguinte erro está ocorrendo quando o metodo e chamado:

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

    o campo com a data no banco é do tipo varchar isto tem alguma influencia?

    desde já agradeço.

    quinta-feira, 15 de março de 2012 00:53

Respostas

  • Olá Andreys,

    Tudo beleza?

    O EF não da suporte para este tipo de operação.

    As possíveis causas disso são duas:

    - Toda a sintaxe LINQ (ou Lambda) são traduzidas para a linguagem SQL, o compilador não sabe com interpretar este tipo de expressão (Convert) para a linguagem SQL.

    - Corre-se um risco muito grande de performance e consumo de recurso do banco de dados se fosse possível converter este tipo de operação para a linguagem SQL, pois operações mal previstas poderiam executar funções imprevisíveis em uma quantidade mto grande de registros.

    Possíveis soluções para o seu problema: Mude o tipo de dados ou crie uma coluna nova em sua tabela, ou crie uma VIEW e mapee essa VIEW com o EF 4.1

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    quinta-feira, 15 de março de 2012 01:33
    Moderador

Todas as Respostas

  • Olá Andreys,

    Tudo beleza?

    O EF não da suporte para este tipo de operação.

    As possíveis causas disso são duas:

    - Toda a sintaxe LINQ (ou Lambda) são traduzidas para a linguagem SQL, o compilador não sabe com interpretar este tipo de expressão (Convert) para a linguagem SQL.

    - Corre-se um risco muito grande de performance e consumo de recurso do banco de dados se fosse possível converter este tipo de operação para a linguagem SQL, pois operações mal previstas poderiam executar funções imprevisíveis em uma quantidade mto grande de registros.

    Possíveis soluções para o seu problema: Mude o tipo de dados ou crie uma coluna nova em sua tabela, ou crie uma VIEW e mapee essa VIEW com o EF 4.1

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    quinta-feira, 15 de março de 2012 01:33
    Moderador
  • valeu! eu mudei o tipo de coluna para date..... até mais
    sexta-feira, 16 de março de 2012 23:52