Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Entity Framework (EF) Core é uma versão leve, extensível, de código aberto e multiplataforma da popular tecnologia de acesso a dados do Entity Framework.
O EF Core pode servir como um mapeador objeto-relacional (O/RM), 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 muitos mecanismos de banco de dados, consulte Provedores de banco de dados para obter detalhes.
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. Para obter mais informações, consulte Criando um modelo.
A EF apoia as seguintes abordagens de desenvolvimento de modelos:
- Gere um modelo a partir de um banco de dados existente.
- Codifique manualmente um modelo para corresponder ao banco de dados.
- Depois que um modelo for criado, use Migrações EF para criar um banco de dados a partir do modelo. As migrações permitem evoluir o banco de dados à medida que o modelo muda.
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
namespace Intro;
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(
@"Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;ConnectRetryCount=0");
}
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public int Rating { get; set; }
public List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
Consultar
As instâncias das suas classes de entidade são recuperadas da base de dados usando o Language Integrated Query (LINQ). Para obter mais informações, consulte Consultando dados.
using (var db = new BloggingContext())
{
var blogs = await db.Blogs
.Where(b => b.Rating > 3)
.OrderBy(b => b.Url)
.ToListAsync();
}
Guardar dados
Os dados são criados, excluídos e modificados no banco de dados usando instâncias de suas classes de entidade. Consulte Guardar dados para saber mais.
using (var db = new BloggingContext())
{
var blog = new Blog { Url = "http://sample.com" };
db.Blogs.Add(blog);
await db.SaveChangesAsync();
}
Considerações sobre EF O/RM
Embora o EF Core seja bom em abstrair muitos detalhes de programação, existem algumas práticas recomendadas aplicáveis a qualquer O/RM que ajudam a evitar armadilhas comuns em aplicativos de produção:
- O conhecimento de nível intermediário ou superior do servidor de banco de dados subjacente é essencial para arquitetar, depurar, criar perfis e migrar dados em aplicativos de produção de alto desempenho. Por exemplo, conhecimento de chaves primárias e estrangeiras, restrições, índices, normalização, instruções DML e DDL, tipos de dados, criação de perfis, etc.
- Testes funcionais e de integração: é importante replicar o ambiente de produção o mais próximo possível para:
- Encontre problemas no aplicativo que só aparecem ao usar uma versão ou edição específica do servidor de banco de dados.
- Detete alterações significativas ao atualizar o EF Core e outras dependências. Por exemplo, adicionando ou atualizando estruturas como ASP.NET Core, OData ou AutoMapper. Essas dependências podem afetar o EF Core de maneiras inesperadas.
- Testes de desempenho e esforço com cargas representativas. O uso ingênuo de alguns recursos não se dimensiona bem. Por exemplo, várias coleções, incluíções múltiplas, uso intenso de carregamento preguiçoso, consultas condicionais em colunas não indexadas, atualizações massivas e inserções com valores gerados pela base de dados, falta de gestão de concorrência, modelos grandes e política de cache inadequada.
- Revisão de segurança: por exemplo, manipulação de cadeias de conexão e outros segredos, permissões de banco de dados para operação de não-implantação, validação de entrada para SQL bruto, criptografia para dados confidenciais. Consulte Fluxos de autenticação seguros para obter a configuração segura e o fluxo de autenticação.
- Certifique-se de que o registo e o diagnóstico são suficientes e utilizáveis. Por exemplo, configuração de log apropriada, tags de consulta e Application Insights.
- Recuperação de erros. Prepare contingências para cenários comuns de falha, como reversão de versão, servidores de fallback, escalabilidade horizontal e balanceamento de carga, mitigação de DoS e backups de dados.
- Implantação e migração de aplicativos. Planejar como as migrações serão aplicadas durante a implantação; Fazê-lo no início do aplicativo pode sofrer problemas de simultaneidade e requer permissões mais altas do que o necessário para a operação normal. Use o preparo para facilitar a recuperação de erros fatais durante a migração. Para obter mais informações, consulte Aplicação de Migrações.
- Exame detalhado e teste das migrações geradas. As migrações devem ser exaustivamente testadas antes de serem aplicadas aos dados de produção. A forma do esquema e os tipos de coluna não podem ser facilmente alterados quando as tabelas contêm dados de produção. Por exemplo, no SQL Server,
nvarchar(max)edecimal(18, 2)raramente são os melhores tipos para colunas mapeadas para propriedades de cadeia de caracteres e decimais, mas esses são os padrões que o EF usa porque não tem conhecimento do seu cenário específico.
Próximos passos
Para tutoriais introdutórios, consulte Introdução ao Entity Framework Core.