Compreender o EF Core

Concluído

O Entity Framework Core (EF Core) é um mapeador relacional de objetos (ORM). Um ORM fornece uma camada entre o modelo de domínio que implementa no código e numa base de dados. O EF Core é uma API de acesso a dados que lhe permite interagir com a base de dados através da sintaxe CLR (Common Runtime Language) antiga do .NET e da sintaxe de Consulta Integrada de Linguagem (LINQ).

No EF Core, a base de dados é abstraída por trás de POCOs .NET. O EF Core processa a interação direta com a base de dados subjacente. Quando utiliza esta API, pode passar menos tempo a traduzir pedidos de e para a base de dados e a escrever SQL e mais tempo a focar-se na lógica de negócio importante.

Com o EF Core, pode:

  • Carregar dados como objetos C# (entidades).
  • Adicione, modifique e elimine dados ao chamar métodos nas entidades.
  • Mapear várias tabelas de bases de dados para uma única entidade C#.
  • Lidar com problemas de simultaneidade que surgem quando vários utilizadores tentam atualizar simultaneamente o mesmo registo.
  • Utilize a sintaxe LINQ (System.Linq) fortemente digitada para consultar a base de dados.
  • Aceda a várias bases de dados, incluindo SQL Server, SQLite, Azure Cosmos DB, PostgreSQL, MySQL e muito mais.
  • Crie o modelo de domínio a partir de uma base de dados existente.
  • Faça a gestão do esquema da base de dados com base no modelo de domínio.
  • Consolide alterações a gráficos de objetos complexos, profundos ou largos de entidades relacionadas com uma única chamada de método.

Rever a arquitetura do EF Core

O diagrama seguinte ilustra a arquitetura do EF Core:

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

DbContext é uma classe especial que representa uma unidade de trabalho. DbContext fornece métodos que pode utilizar para configurar opções, cadeias de ligação, registo e o modelo utilizado para mapear o seu domínio para a base de dados.

Classes derivadas 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 na base de dados.

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

O fornecedor da base de dados:

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

Gerir esquemas de base de dados

O EF Core fornece duas formas principais de manter o modelo EF Core e o esquema da base de dados sincronizados:

  • Migrações (modelo como fonte de verdade)
  • Engenharia inversa (base de dados como fonte de verdade)

Para escolher entre estas opções, decida se o modelo EF Core ou o esquema da base de dados é a origem da verdade.

Migrações

Em projetos do mundo real, os modelos de dados mudam à medida que as funcionalidades da aplicação são implementadas. À medida que as novas entidades são adicionadas e removidas, os esquemas da base de dados têm de ser alterados em conformidade. A funcionalidade migrações EF Core fornece uma forma de atualizar incrementalmente o esquema da base de dados para mantê-lo sincronizado com o modelo de dados da aplicação, preservando os dados existentes na base de dados.

Quando é introduzida uma alteração do modelo de dados, o programador utiliza 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. Os ficheiros C# podem ser modificados para comportamentos personalizados ou para dados de sementes. Os ficheiros são controlados no controlo de origem do projeto como qualquer outro ficheiro de origem.

Depois de uma nova migração ser gerada, pode ser aplicada a uma base de dados de várias formas. O EF Core regista todas as migrações aplicadas numa tabela de histórico especial. A tabela do histórico mantém um registo das migrações que foram aplicadas.

Engenharia inversa

A engenharia inversa é o processo de estruturar classes de modelos de entidades e uma DbContext classe baseada num esquema de base de dados. Esta abordagem é frequentemente utilizada com bases de dados existentes ou partilhadas que são geridas por um administrador de base de dados.

Na próxima unidade, irá começar a utilizar o EF Core através de uma migração.

Verifique o seu conhecimento

1.

Que classe fornece um conjunto base de operações que pode utilizar para configurar e interagir com a sua base de dados?