O que é Entity Framework Core?
A maioria dos aplicativos Web não triviais precisa executar operações de forma confiável nos dados, como criar, ler, atualizar e excluir (CRUD). Eles também precisam manter as alterações feitas por essas operações entre as reinicializações do aplicativo. Embora haja várias opções para persistir dados em aplicativos .NET, o EF (Entity Framework) Core é uma solução amigável e uma ótima opção para muitos aplicativos .NET.
Entender o EF Core
O EF Core é uma tecnologia de acesso a dados leve, extensível, de código aberto e de plataforma cruzada para aplicativos .NET.
O EF Core pode servir como um mapeador relacional de objeto, que:
- Permite que os desenvolvedores do .NET trabalhem com um banco de dados usando objetos .NET.
- Elimina a necessidade da maior parte do código de acesso a dados que normalmente precisa ser gravado.
O EF Core dá suporte a um grande número de bancos de dados populares, incluindo SQLite, MySQL, PostgreSQL, Oracle e Microsoft SQL Server.
O modelo
Com o EF Core, o acesso a dados é executado usando um modelo. Um modelo é feito de classes de entidade e um objeto de contexto que representa uma sessão com o banco de dados. O objeto de contexto permite consultar e salvar dados.
A classe da entidade
Neste cenário, você está implementando uma API de gerenciamento de uma loja de pizzas e, portanto, usa uma classe de entidade Pizza. As pizzas em sua loja têm um nome e uma descrição. Elas também precisam de uma ID para permitir que a API e o banco de dados as identifiquem. A classe de entidade Pizza que você usa em seu aplicativo identifica as pizzas:
namespace PizzaStore.Models
{
public class Pizza
{
public int Id { get; set; }
public string? Name { get; set; }
public string? Description { get; set; }
}
}
A classe de contexto
Esse aplicativo tem apenas uma classe de entidade, mas a maioria dos aplicativos tem várias classes de entidade. A classe de contexto é responsável por consultar e salvar dados nas classes de entidade e por criar e gerenciar a conexão do banco de dados.
Executar operações CRUD com EF Core
Após a configuração do EF Core, você pode usá-lo para executar operações CRUD nas classes de entidade. Em seguida, você pode desenvolver em classes C#, delegando as operações do banco de dados para a classe de contexto. Os provedores de banco de dados, por sua vez, o converte em linguagem de consulta específica para o banco de dados. Um exemplo é o SQL para banco de dados relacional. As consultas são sempre executadas no banco de dados, mesmo que as entidades retornadas no resultado já existam no contexto.
Consultar dados
O objeto de contexto expõe uma classe de coleção para cada tipo de entidade. No exemplo acima, a classe de contexto expõe uma coleção de objetos Pizza como Pizzas. Considerando que temos uma instância da classe de contexto, você pode consultar o banco de dados para todas as pizzas:
var pizzas = await db.Pizzas.ToListAsync();
Inserir dados
Você pode usar o mesmo objeto de contexto para inserir uma nova pizza:
await db.pizzas.AddAsync(
new Pizza { ID = 1, Name = "Pepperoni", Description = "The classic pepperoni pizza" });
Excluir dados
As operações de exclusão são simples. Elas exigem apenas a ID do item a ser excluído:
var pizza = await db.pizzas.FindAsync(id);
if (pizza is null)
{
//Handle error
}
db.pizzas.Remove(pizza);
Atualizar dados
Da mesma forma, você pode atualizar uma pizza existente:
int id = 1;
var updatepizza = new Pizza { Name = "Pineapple", Description = "Ummmm?" };
var pizza = await db.pizzas.FindAsync(id);
if (pizza is null)
{
//Handle error
}
pizza.Description = updatepizza.Description;
pizza.Name = updatepizza.Name;
await db.SaveChangesAsync();
Usar o banco de dados em memória do EF Core
O EF Core inclui um provedor de banco de dados em memória que pode ser usado para testar seu aplicativo. O provedor de banco de dados em memória é útil para teste e desenvolvimento, mas não deve ser usado na produção. Na próxima unidade, você usará o provedor de banco de dados em memória para criar um banco de dados e executar as operações CRUD nele.