EF Core - Benefícios em usar o método Find
Neste artigo veremos quais os benefícios em usar o método Find no EF Core. |
Para localizar elementos em uma lista ou sequência quando usamos o EF Core
geralmente usamos consultas LINQ com os métodos First,
FirstOrDefault, Single e SingleOrDefault e também podemos usar o método
Find() que é um método da classe DbContext.
Vamos iniciar apresentando as definições de cada um destes métodos de extensão:
First : Retorna o primeiro elemento de
uma sequência. Se nenhum elemento for encontrado uma exceção será lançada;
FirstOrDefault :
Retorna o
primeiro elemento de uma sequência ou um valor padrão caso não seja
encontrado nenhum elemento;
Single :
Retorna um único elemento específico da sequência que satisfaz uma condição.
Se houver mais de um elemento lança uma exceção;
SingleOrDefault
: Retorna um único elemento específico da sequência ou um valor padrão se
esse elemento não for encontrado;
Find : Localiza um registro com os valores de chave primária fornecidos. Se a entidade já estiver no contexto (por causa de uma consulta anterior), o método Find a retornará se não estiver no contexto a consulta será enviada ao banco de dados;
Benefícios do método Find
O método Find é um método do Contexto do EF Core que usa a chave primária da entidade que esta sendo rastreada e faz uma busca pela chave primária primeiro no contexto, e, se não encontrar a entidade, então a consulta é feita na base de dados.
Os demais métodos irão todos serem executados diretamente no banco de dados e não vão consultar o contexto primeiro.
Localizar o registro com a chave primária é uma das tarefas comuns que realizamos. O método Find da propriedade DbSet do DbContext nos permite consultar rapidamente o banco de dados. Ele usa a chave primária para retornar a linha correspondente e vai retornar null se nenhuma linha correspondente for encontrada.
Assim como o Find sempre usa a chave primária para realizar a consulta não é necessário informar isso ao método.
private static void Main(string[] args)
{
using var ctx = new ApplicationDbContext();
var cliente = ctx.Clientes.Find(1);
System.Console.WriteLine(cliente.Nome);
Console.ReadKey();
}
|
Encontrar
entidades com chaves primárias compostas é
igualmente fácil. A chave composta consiste em mais
de um campo (ou propriedade) da tabela.
O método Find usa a chave primária para construir a
consulta SQL e a envia ao banco de dados para recuperar os dados. A ordem em que
você especifica o parâmetro para o método Find deve
corresponder à ordem da chave primária definida no banco de dados.
No exemplo a seguir estamos usando uma chave composta:
private void LocalizarPorChaveCompostaId()
{
using var ctx = new ApplicationDbContext();
var pedidos = ctx.Pedidos.Find(1,1)
Console.WriteLine($" {pedidos.PedidoId} {pedidos.ItemId}");
Console.ReadKey();
}
|
Assim dependendo do contexto valerá a pena usar o método Find por ser mais rápido e ser mais simples de usar.
E estamos conversados...
"Porque, se alguém cuida ser alguma coisa, não sendo nada, engana-se a si mesmo.
Mas prove cada um a sua própria obra, e terá glória só em si mesmo, e não
noutro."
Gálatas 6:3,4
Referências: