Compreender o EF Core
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:
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.