O Entity Framework (EF) é um framework de mapeamento objeto-relacional (ORM) de código aberto para a plataforma .NET, desenvolvido pela Microsoft. Neste artigo trago uma dúvida que pode ser recorrente para quem está começando e confesso que, as vezes pode ser um pouco difícil de lembrar também. Se você decora sintaxe, desculpe. Pode me julgar
O Entity Framework (EF) é um framework de mapeamento objeto-relacional (ORM) de código aberto para a plataforma .NET, desenvolvido pela Microsoft.
Neste artigo trago uma dúvida que pode ser recorrente para quem está começando e confesso que, as vezes pode ser um pouco difícil de lembrar também.
Se você decora sintaxe, desculpe. Pode me julgar porque a maioria das coisas que um dia já utilizei pode em algum momento passar batido e ter que consultar.
Acredito que isto é natural, mesmo que depois de alguns anos você não está propriamente desenvolvendo 100% do tempo projetos.
Então, para o artigo trago como que podemos utilizar uma expressão LEFT JOIN no Entity Framework sem usar a sintaxe de queries, que também é possível, mas sim utilizando Lambda Expression.
Como usar a expressão LEFT JOIN no Entity Framework utilizando Lambda Expression
Antes de falar de Lambda Expression, vamos visualizar como fazer a expressão naturalmente utilizando o Entity Framework.
Suponhamos que você tenha duas entidades (tabelas) em seu modelo de dados, por exemplo, Clientes e Pedidos, e deseja fazer um LEFT JOIN para obter todos os clientes, inclusive aqueles que não têm pedidos.
Veja o exemplo:
var query = from cliente in context.Clientes
join pedido in context.Pedidos on cliente.ClienteId equals pedido.ClienteId into pedidosGroup
from pedidos in pedidosGroup.DefaultIfEmpty()
select new
{
cliente.Nome,
Pedido = pedidos != null ? pedidos.NumeroPedido : (int?)null
};
O mesmo exemplo você pode escrever utilizando expressões Lambda, você terá:
var query = context.Clientes
.GroupJoin(
context.Pedidos,
cliente => cliente.ClienteId,
pedido => pedido.ClienteId,
(cliente, pedidos) => new
{
Cliente = cliente,
Pedidos = pedidos.DefaultIfEmpty()
}
)
.SelectMany(
result => result.Pedidos.DefaultIfEmpty(),
(result, pedido) => new
{
result.Cliente.Nome,
Pedido = pedido != null ? pedido.NumeroPedido : (int?)null
}
);
Simples assim e note que com uma sintaxe mais clean e bem mais fácil de entender.
Lambda Expressions
Uma expressão lambda (lambda expression) é uma funcionalidade presente em várias linguagens de programação que permite criar funções anônimas de forma concisa e inline.
As expressões lambda são frequentemente usadas para criar funções simples e pequenas, que podem ser passadas como argumentos para outras funções ou usadas em contextos onde funções são necessárias.
Elas são especialmente úteis em linguagens que suportam programação funcional.
Leave a Comment
Your email address will not be published. Required fields are marked with *