none
Problema com método no Entity Framework RRS feed

  • Pergunta

  • Ola caros colegas desenvolvedores, a algum tempo vim com um problema semelhante, para ajudar a construir uma expressão linq
    após mutuas tentativas frustantes aderia ao bom e velho ado, mas como estou reescrevendo parte do sistema que roda na empresa
    resolvi tentar novamente utilizar EntityFramework e Linq, e estou me deparando com a seguinte exceção

    Detalhes da Exceção: System.NotSupportedException: LINQ to Entities não reconhece o método 'System.Collections.Generic.IEnumerable`1[EOCLDBLibrary.ViagensEqvs] DefaultIfEmpty[ViagensEqvs](System.Collections.Generic.IEnumerable`1[EOCLDBLibrary.ViagensEqvs])', que não pode ser convertido em uma expressão de armazenamento.

    este erro está ocorrendo com o seguinte linq:

     

       tdmaxCLEntity = new TDMaxCampoLargoEntities();
       var select = from viags in tdmaxCLEntity.Viagens
           join vEqvs in tdmaxCLEntity.ViagensEqvs on
            new { viags.TurnoID }
             equals
            new { vEqvs.Viagens.TurnoID }
           into tr_vEqvs
           from subTr_vEqvs in tr_vEqvs.DefaultIfEmpty()
           join prod in tdmaxCLEntity.Produtos on
            subTr_vEqvs.ProdutoId equals prod.ProdutoID
            into subTr_vEqvs_Prod
           from subProd in subTr_vEqvs_Prod.DefaultIfEmpty()
           join turnos in tdmaxCLEntity.Turnos on
            viags.TurnoID equals turnos.TurnoID
           join linha in tdmaxCLEntity.Linhas on
            turnos.LinhaID equals linha.LinhaID
            into subLinhas_Turno
           from subLT in subLinhas_Turno.DefaultIfEmpty()
           where turnos.DataIni.ToString("d").Contains(dtI.ToString("d"))
           select new{
            TurnoID = turnos.TurnoID != null ? turnos.TurnoID : 0,
            DataIni = turnos.DataIni != null ? turnos.DataIni : new DateTime(),
            DataFim = turnos.DataFim != null ? turnos.DataFim : new DateTime(),
            Prefixo = turnos.Prefixo != null ? turnos.Prefixo : 0,
            CatracaIni = turnos.CatracaIni != null ? turnos.CatracaIni : 0,
            CatracaFim = turnos.CatracaFim != null ? turnos.CatracaFim : 0,
            MotoristaID = turnos.MotoristaID != null ? turnos.MotoristaID : 0,
            FamiliaID = subProd.Familias.FamiliaID != null && subProd.Familias.FamiliaID == 4 && subTr_vEqvs.CadastroTipoId != 0 ? 200 : subProd.Familias.FamiliaID != null ? subProd.Familias.FamiliaID : 0,
            Abreviacao = subProd.Abreviacao != null ? subProd.Abreviacao : "",
            valorUnitario = subTr_vEqvs.valorUnitario != null ? subTr_vEqvs.valorUnitario : 0,
            quantidade = subTr_vEqvs.creditos != null ? subTr_vEqvs.creditos : 0,
            contador = subTr_vEqvs.creditos != null ? subTr_vEqvs.creditos : 0,
            abrevFamilia = subProd.Familias.FamiliaID != null && subProd.Familias.FamiliaID == 4 && subTr_vEqvs.CadastroTipoId != 0 ? "PAGANTE-CARTÃO" : subProd.Familias.Descricao,
            //abrevFamilia = p.Familia.Descricao,
           linha = subLT.Codigo != "" ? subLT.Codigo : "0"
           };
    
       foreach (var item in select)
       {
        object a = item.Prefixo;
       }
       return select;
    

     


    gostaria de saber dos senhores o que eu poderia estar fazendo errado.

     

    Obrigado desde já


      
    Atenciosamente:
     
    Edney Batista da Silva - Desenvolvedor .Net, C#, Asp.Net, Java, SQL
     
    CONTATOS:
     
    Hotmail:
    edney_contato@hotmail.com
    Skype: edney.dyn


    segunda-feira, 28 de março de 2011 19:18

Respostas

Todas as Respostas

  • eu nao sou amigo do linq, aqui vai dicas: http://msdn.microsoft.com/en-us/vcsharp/aa336746

    Aqui tem uma materia: http://msdn.microsoft.com/en-us/magazine/cc163400.aspx


    Just Be Humble Malange!
    segunda-feira, 28 de março de 2011 19:52
  • Edney,

    O método DefaultIfEmpty() é suportado à partir da versão 4.0 do Entity Framework. O link abaixo diz o seguinte:

    More LINQ Operators in LINQ to Entities: More LINQ operators are supported by EF4 such as Contains, Single, SingleOrDefault and DefaultIfEmpty.

    Announcing the release of Entity Framework 4
    http://blogs.msdn.com/b/efdesign/archive/2010/04/12/announcing-the-release-of-entity-framework-4.aspx

    Qual versão está utilizando?

    Att.

    Ari C. Raimundo
    MCAD, MCTS
    http://araimundo.blogspot.com

    segunda-feira, 28 de março de 2011 23:36
  • Olá Ari bom pois bem eu tive este cuidado em verifcar,
    em primeira instancia confeço estar utilizando a versão 3.5 mas logo ao me deparar e perceber
    este detalhe imediatamente troquei a versão do da biblioteca importando para o projeto a versão 4.0 destas bibliotecas
    por isto não estou intendendo o pq do erro estar persistindo

    grato pela ajuda


     
    Atenciosamente:
     
    Edney Batista da Silva - Desenvolvedor .Net, C#, Asp.Net, Java, SQL
     
    CONTATOS:
     
    Hotmail:
    edney_contato@hotmail.com
    Skype: edney.dyn

    terça-feira, 29 de março de 2011 03:09
  • Olá Ari pois bm novamente lhe falando. Hoje para tirar qlqr sombra de duvidas resolvi dar uma olhada na versão da dll do linq

    ao verificar as propriedades notei q ela realmente está com a versão 3.5, já tentei auterala algumas vezes mas não estou tendo sucesso

    mesmo excluindo-a e referenciando a dll da pasta do framework 4.0 ele ta puxando a do 3.5,

    A algum procedimento diferente para importar esse tipo de dlls

     

     

    grato

     

     


     
    Atenciosamente:
     
    Edney Batista da Silva - Desenvolvedor .Net, C#, Asp.Net, Java, SQL
     
    CONTATOS:
     
    Hotmail:
    edney_contato@hotmail.com
    Skype: edney.dyn

    terça-feira, 29 de março de 2011 12:15
  • Edney,

    Não que eu saiba. Por acaso o seu projeto está configurado para utilizar o .NET 4.0?

    Att.

    Ari C. Raimundo
    MCAD, MCTS
    http://araimundo.blogspot.com

    terça-feira, 29 de março de 2011 12:34
  • Agradeço a todos que me ajudaram.
    Bom sobre o erro para caso alguém tenho o mesmo problema algum dia, o ocorrido foi o seguinte
    Era o real problema de versão do .NET msmo, sendo falta de atenção de minha pessoa. Pois ao
    iniciar o projeto não reparei que o framework estava setado para 3.5 e não 4.0, então recriei os projetos
    cetando o FRAMEWORK PARA 4.0 copiei o código e testei novamente e não gerou nenhuma exceção
    mto obrigado caros colegas desenvolvedores mas uma vez sempre ai nos ajudando ;D


     
    Atenciosamente:
     
    Edney Batista da Silva - Desenvolvedor .Net, C#, Asp.Net, Java, SQL
     
    CONTATOS:
     
    Hotmail:
    edney_contato@hotmail.com
    Skype: edney.dyn

    terça-feira, 29 de março de 2011 15:25