Compreender o EF Core

Concluído

O Entity Framework Core (EF Core) é um mapeador objeto-relacional (ORM). Um ORM fornece uma camada entre o modelo de domínio que você implementa no código e um banco de dados. O EF Core é uma API de acesso a dados que permite interagir com o banco de dados usando objetos CLR (Common Runtime Language) simples e antigos do .NET e a sintaxe LINQ (Language Integrated Query) fortemente tipada.

No EF Core, o banco de dados é abstraído atrás de POCOs .NET. O EF Core lida com a interação direta com o banco de dados subjacente. Ao usar essa API, você pode gastar menos tempo traduzindo solicitações de e para o banco de dados e escrevendo SQL e mais tempo se concentrando em lógica de negócios importante.

Com o EF Core, você pode:

  • Carregue dados como objetos C# (entidades).
  • Adicione, modifique e exclua dados chamando métodos nas entidades.
  • Mapeie várias tabelas de banco de dados para uma única entidade C#.
  • Lidar com problemas de simultaneidade que surgem quando vários usuários tentam atualizar o mesmo registro simultaneamente.
  • Use a sintaxe LINQ (System.Linq) para consultar o banco de dados.
  • Acesse vários bancos de dados, incluindo SQL Server, SQLite, Azure Cosmos DB, PostgreSQL, MySQL e muito mais.
  • Crie seu modelo de domínio a partir de um banco de dados existente.
  • Gerencie seu esquema de banco de dados com base em seu modelo de domínio.
  • Confirme alterações em gráficos de objetos complexos, profundos ou amplos de entidades relacionadas usando uma única chamada de método.

Rever a arquitetura do EF Core

O diagrama a seguir mostra a arquitetura do EF Core:

Diagrama que mostra componentes e processos na arquitetura Entity Framework Core.

DbContext é uma classe especial que representa uma unidade de trabalho. DbContext Fornece métodos que você pode usar para configurar opções, cadeias de conexão, registro em log e o modelo usado para mapear seu domínio para o banco de dados.

Classes que derivam de DbContext:

  • Representam uma sessão ativa com a base de dados.
  • Guardam e consultam instâncias de entidades.
  • Inclua propriedades do tipo DbSet<T> que representam tabelas no banco de dados.

O Fornecedor de EF Core converte as alterações do gráfico de objeto em SQL.

O provedor do banco de dados:

  • É uma biblioteca de plug-ins concebida para um motor de base de dados específico, como o SQL Server, o Azure Cosmos DB ou o PostgreSQL.
  • Traduz chamadas de método e consultas LINQ para o dialeto SQL nativo do banco de dados.
  • Expande o EF Core para ativar a funcionalidade que é exclusiva do motor de base de dados.

Gerenciar esquemas de banco de dados

O EF Core fornece duas maneiras principais de manter o modelo do EF Core e o esquema de banco de dados sincronizados:

  • Migrações (modelo como fonte de verdade)
  • Engenharia reversa (banco de dados como fonte de verdade)

Para escolher entre essas opções, decida se seu modelo EF Core ou o esquema de banco de dados é a fonte da verdade.

Migrações

Em projetos do mundo real, os modelos de dados mudam à medida que os recursos do aplicativo são implementados. À medida que novas entidades são adicionadas e removidas, os esquemas de banco de dados precisam ser alterados de acordo. O recurso de migrações do EF Core fornece uma maneira de atualizar incrementalmente o esquema do banco de dados para mantê-lo sincronizado com o modelo de dados do aplicativo, preservando os dados existentes no banco de dados.

Quando uma alteração de modelo de dados é introduzida, o desenvolvedor usa as ferramentas EF Core para adicionar uma migração correspondente. O EF Core compara o modelo atual com um instantâneo do modelo anterior para determinar as diferenças. O código C# para implementar as alterações é gerado. Você pode modificar os arquivos C# para comportamentos personalizados ou para semear dados. Os arquivos são rastreados no controle de origem do seu projeto como qualquer outro arquivo de origem.

Depois que uma nova migração é gerada, ela pode ser aplicada a um banco de dados de várias maneiras. O EF Core registra todas as migrações aplicadas em uma tabela de histórico especial. A tabela de histórico mantém um registro de quais migrações foram aplicadas.

Engenharia inversa

Engenharia reversa é o processo de classes de modelo de entidade de andaime e uma DbContext classe baseada em um esquema de banco de dados. Essa abordagem geralmente é usada com bancos de dados existentes ou compartilhados que um administrador de banco de dados gerencia.

Na próxima unidade, você começa a usar o EF Core usando uma migração.

Verifique o seu conhecimento

1.

Qual classe fornece um conjunto básico de operações que você pode usar para configurar e interagir com seu banco de dados?