Entender o EF Core
O EF Core (Entity Framework Core) é um ORM (mapeador relacional de objeto). 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 que você interaja com o banco de dados usando simples objetos antigos em Common Language Runtime (CLR) (POCOs) do .NET e a sintaxe fortemente tipada da Consulta Integrada à Linguagem (LINQ).
No EF Core, o banco de dados é abstraído por trás de POCOs do .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 recebidas e enviadas ao banco de dados e escrevendo em SQL, e mais tempo se concentrando em lógicas de negócios importantes.
Com EF Core, você pode:
- Carregar dados como objetos C# (entidades).
- Adicione, modifique e exclua dados chamando métodos nas entidades.
- Mapeie várias tabelas do banco de dados para uma única entidade C#.
- Lide com problemas simultâneos que surgem quando vários usuários tentam atualizar o mesmo registro ao mesmo tempo.
- 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 de um banco de dados existente.
- Gerencie seu esquema de banco de dados com base em seu modelo de domínio.
- Confirme as alterações em grafos de objetos complexos, profundos ou largos de entidades relacionadas usando apenas uma chamada de método.
Examinar a arquitetura do EF Core
O seguinte diagrama ilustra a arquitetura do EF Core:
DbContext é uma classe especial que representa uma unidade de trabalho. O 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
:
- Representa uma sessão ativa com o banco de dados.
- Salve e consulte instâncias de entidades.
- Incluir propriedades do tipo
DbSet<T>
que representam tabelas no banco de dados.
O provedor do EF Core move alterações do grafo de objetos para o SQL.
O provedor de banco de dados:
- Uma biblioteca de plug-in foi projetada para um mecanismo de banco de dados específico, como SQL Server, Azure Cosmos DB ou PostgreSQL.
- Converte chamadas de método e consultas LINQ no dialeto SQL nativo do banco de dados.
- Estende o EF Core para habilitar a funcionalidade que é exclusiva do mecanismo de banco de dados.
Gerenciar esquemas de banco de dados
O EF Core oferece duas maneiras principais de manter seu esquema de banco de dados e modelo do EF Core em sincronia:
- Migrações (modelo como a fonte da verdade)
- Engenharia reversa (banco de dados como a fonte da verdade)
Para escolher entre essas opções, decida se seu modelo do EF Core ou o esquema de banco de dados é a fonte de verdade.
Migrações
Em projetos do mundo real, os modelos de dados mudam conforme 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 de maneira incremental o esquema de banco de dados para mantê-lo em sincronia 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 ferramentas do EF Core para adicionar uma migração correspondente. O EF Core compara o modelo atual com um instantâneo do modelo antigo para determinar as diferenças. O código C# para implementar as alterações é gerado. Você pode modificar os arquivos em C# para comportamentos personalizados ou para dados de propagação. Os arquivos são rastreados no controle do código-fonte do projeto, como qualquer outro arquivo de origem.
Depois que uma nova migração é gerada, é possível aplicá-la 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 do histórico mantém um registro de quais migrações foram aplicadas.
Engenharia reversa
Engenharia reversa é o processo de scaffolding de classes de modelo de entidade e uma classe DbContext
com base em um esquema de banco de dados. Essa abordagem costuma ser usada com bancos de dados existentes ou compartilhados que são gerenciados por um administrador de banco de dados.
Na próxima unidade, você será apresentado ao EF Core usando uma migração.