none
Entity Framework, Linq to Sql ou Lambda ? RRS feed

  • Pergunta

  • Tenho o Entity Framework implementado e toda vez que vou fazer uma consulta, normalmente faco:

    return context.Pedidos();

    Agora preciso fazer um join e fiquei com uma duvida:
    1. O que estou usando nessa consulta ? Entity Framework, Linq to Sql or Lambda ?
    2. se eu uso queries Linq nao estarei utilizando mais um componente e sobrecarregando a aplicacao ?
    3. O que e' isso, lambda ou Linq  ? return context.Pedidos.Where(p => p.statusPedido == 1)

    Valeu

    terça-feira, 31 de março de 2015 19:12

Todas as Respostas

  • Cara, tenho praticamente as mesmas dúvidas que você.
    Esse link abaixo pode te ajudar a decidir qual usar:
    http://imasters.com.br/artigo/15036/dotnet/comparativo-de-performance-linq-lambda-e-dynamic-linq/

    • Sugerido como Resposta Renato GroffeMVP quarta-feira, 1 de abril de 2015 11:25
    terça-feira, 31 de março de 2015 19:28
  • Seu objeto context é um exemplo de classe de contexto criada com o Entity Framework. Um contexto permite o acesso a várias entidades, as quais normalmente possuem algum tipo de relacionamento.

    Queries LINQ são uma forma de se consultar entidades de um contexto. A outra maneira equivalente é o uso de algum método como Where, por exemplo, em que vc utilizará uma expressão lambda para se produzir algum resultado.

    Esse é um resumo bem sucinto, mas creio que deva ajudar vc a compreender melhor.

    Abs

    • Sugerido como Resposta Renato GroffeMVP quarta-feira, 1 de abril de 2015 11:25
    terça-feira, 31 de março de 2015 19:42
  • Olá Aga Neto,

     vamos lá : Entity Framework é um ORM, Linq To Sql outro ORM, e lambda é uma expressão que pode ser convertida em um delegate ou em expressões no seu caso ! 

     2 = Você quer dizer se fazer uma consulta por exemplo no Entity utilizando linq ? Caso seja

           Se deseja uma melhor performance opte por lambda porque no final o linq é convertido para lambda em tempo de execução do MSIL.

    3 - return context.Pedidos.Where(p => p.statusPedido == 1) Isso nada mais é do que um select :

          "SELECT CAMPO1, CAMPO2 FROM PEDIDOS WHERE StatusPedido = 1"

     Isso é lambda em forma de expressão ! 

     Sei que é complicado de entender mas leia esse artigo vai ajudar :

    Lambda !


    terça-feira, 31 de março de 2015 19:43
  • Aga, boa noite!

    Segue um exemplo altere para usar com seu model!

      public List<PessoaEntity> GetById(int filtro)
            {
                try
                {
                    using (var Scope = new TransactionScope())
                    {
                        using (var db = new DbDesenvWebContext())
                        {
                            var retorno = new List<PessoaEntity>();
    
                            var qry = (from table in db.PessoaEntity
                                       join e in db.EnderecoEntity on table.CodigoPessoa equals e.CodigoPessoa
                                       join c in db.ContatoEntity on table.CodigoPessoa equals c.CodigoPessoa
                                       where table.CodigoPessoa.Equals(filtro)
                                       select new
                                       {
                                           table.CodigoPessoa,
                                           table.NomePessoa,
                                           table.CpfCnpj,
                                           table.Tipo,
                                           table.Status,
                                           table.ResponsavelAlteracao,
                                           table.DataAlteracao,
                                           table.DataCadastro,
    
                                           e.CodigoEndereco,
                                           e.Logradouro,
                                           e.Numero,
                                           e.Complemento,
                                           e.Bairro,
                                           e.Cidade,
                                           e.Cep,
                                           e.Estado,
    
                                           c.CodigoContato,
                                           c.Telefone,
                                           c.Celular,
                                           c.Email,
                                           c.WebSite,
                                           c.Ramal
                                       });
    
                            var q = qry.Take(500).OrderByDescending(x => x.DataCadastro).ToList();
    
                            for (int i = 0; i < q.Count(); i++)
                            {
                                var pess = new PessoaEntity();
    
                                pess.CodigoPessoa = q[i].CodigoPessoa;
                                pess.NomePessoa = q[i].NomePessoa;
                                pess.CpfCnpj = q[i].CpfCnpj;
                                pess.Status = q[i].Status;
                                pess.Tipo = q[i].Tipo;
                                pess.DataCadastro = q[i].DataCadastro;
                                pess.DataAlteracao = q[i].DataAlteracao;
                                pess.ResponsavelAlteracao = q[i].ResponsavelAlteracao;
    
                                var conta = new ContatoEntity()
                                {
                                    CodigoContato = q[i].CodigoContato,
                                    CodigoPessoa = q[i].CodigoPessoa,
                                    Telefone = q[i].Telefone,
                                    Celular = q[i].Celular,
                                    Email = q[i].Email,
                                    Ramal = q[i].Ramal,
                                    WebSite = q[i].WebSite,
                                    DataCadastro = q[i].DataCadastro,
                                    DataAlteracao = q[i].DataAlteracao,
                                    ResponsavelAlteracao = q[i].ResponsavelAlteracao
                                };
    
                                pess.Contato.Add(conta);
    
                                var end = new EnderecoEntity()
                                {
                                    CodigoEndereco = q[i].CodigoEndereco,
                                    CodigoPessoa = q[i].CodigoPessoa,
                                    Logradouro = q[i].Logradouro,
                                    Numero = q[i].Numero,
                                    Complemento = q[i].Complemento,
                                    Cidade = q[i].Cidade,
                                    Bairro = q[i].Bairro,
                                    Cep = q[i].Cep,
                                    Estado = q[i].Estado,
                                    DataCadastro = q[i].DataCadastro,
                                    DataAlteracao = q[i].DataAlteracao,
                                    ResponsavelAlteracao = q[i].ResponsavelAlteracao
                                };
    
                                pess.Endereco.Add(end);
    
                                retorno.Add(pess);
                            }
    
                            // Finaliza conexão com bando de dados
                            Scope.Complete();
    
                            return retorno.OrderBy(b => b.NomePessoa).Distinct().ToList();
                        }
                    }
                }
                catch (System.Data.Entity.Validation.DbEntityValidationException exception)
                {
                    var retornoError = exception.EntityValidationErrors.SelectMany(x => x.ValidationErrors).Select(x => x.ErrorMessage);
                    var fullRetornoError = string.Join(Environment.NewLine, retornoError);
                    var exceptionMessage = string.Concat(exception.Message, Environment.NewLine, fullRetornoError);
    
                    throw new System.Data.Entity.Validation.DbEntityValidationException(exceptionMessage, exception.EntityValidationErrors);
                }
            }
    Caso não consiga implementar avise!


    Se a resposta for útil, favor votar como útil para que ajude outros usuários com a mesma dúvida.

    Att,

    André Côrte
    Analista de Sistema
    Skype: corte.solutions
    Nosso trabalho
    Grupo de Estudo no Facebook
    Canal de Estudo no Youtube

    quarta-feira, 1 de abril de 2015 02:38