Inquiridor
Entity Framework, Linq to Sql ou Lambda ?

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
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
-
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
-
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 :
-
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