O que é o Entity Framework Core?

Concluído

A maioria dos aplicativos Web não triviais precisa executar operações confiáveis em dados, como criar, ler, atualizar e excluir (CRUD). Eles também precisam persistir quaisquer alterações feitas por essas operações entre as reinicializações do aplicativo. Embora existam várias opções para a persistência de dados em aplicativos .NET, o Entity Framework (EF) Core é uma solução amigável e uma ótima opção para muitos aplicativos .NET.

Compreender o EF Core

O EF Core é uma tecnologia de acesso a dados leve, extensível, de código aberto e multiplataforma para aplicativos .NET.

O EF Core pode servir como um mapeador objeto-relacional, que:

  • Permite que os desenvolvedores .NET trabalhem com um banco de dados usando objetos .NET.
  • Elimina a necessidade da maioria do código de acesso a dados que normalmente precisa ser escrito.

O EF Core suporta 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 aos dados é realizado usando um modelo. Um modelo é composto 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 de entidade

Nesse cenário, você está implementando uma API de gerenciamento de pizzaria, portanto, você usa uma classe de Pizza entidade. As pizzas da sua loja têm um nome e uma descrição. Eles também precisam de um ID para permitir que a API e o banco de dados os identifiquem. A Pizza classe de entidade que você usa em seu aplicativo identifica 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

Este 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 em suas classes de entidade e por criar e gerenciar a conexão de banco de dados.

Execute operações CRUD com o EF Core

Depois que o EF Core estiver configurado, você poderá usá-lo para executar operações CRUD em suas classes de entidade. Em seguida, você pode desenvolver em classes C#, delegando as operações de banco de dados para a classe de contexto. Os provedores de banco de dados, por sua vez, o traduzem para a linguagem de consulta específica do banco de dados. Um exemplo é SQL para um 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 os dados

O objeto context expõe uma classe de coleção para cada tipo de entidade. No exemplo anterior, a classe context expõe uma coleção de Pizza objetos como Pizzas. Dado 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" });

Eliminar dados

As operações de exclusão são simples. Eles exigem apenas um 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 na memória do EF Core

O EF Core inclui um provedor de banco de dados na memória que pode ser usado para testar seu aplicativo. O provedor de banco de dados na 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 na memória para criar um banco de dados e executar operações CRUD nele.