Sobes.tech
Junior

O que é o Entity Framework?

sobes.tech IA

Resposta da IA

Entity Framework (EF) é um acelerador objeto-relacional (ORM) para .NET que permite aos desenvolvedores trabalhar com bases de dados usando objetos .NET, em vez de escrever a maior parte do código de acesso a dados. Ele converte consultas LINQ em SQL e vice-versa.

Componentes principais e funcionalidades:

  • DbContext: Representa uma sessão de trabalho com a base de dados, incluindo DbSet para entidades.
  • DbSet: Representa uma coleção de entidades de um tipo específico no contexto.
  • LINQ to Entities: Permite escrever consultas à base de dados usando sintaxe LINQ.
  • Migrações (Code-First Migrations): Permitem gerir alterações no esquema da base de dados à medida que o modelo de dados evolui no código.
  • Acompanhamento de alterações: EF rastreia automaticamente as alterações feitas às entidades carregadas da base de dados e gera comandos SQL correspondentes para guardar essas alterações.

Abordagens de desenvolvimento suportadas:

  • Code-First: Definição do modelo de dados no código C# e geração do esquema da base de dados com base nisso.
  • Database-First: Criação do modelo .NET a partir de uma base de dados existente.
  • Model-First: Criação de um modelo gráfico no designer do EF e geração tanto do código como do esquema da base de dados. (Menos comum no EF Core)

Vantagens:

  • Aceleração do desenvolvimento através da abstração dos detalhes de implementação do acesso a dados.
  • Tipagem forte e verificação na fase de compilação.
  • Gestão conveniente do modelo de dados e das suas alterações.

Exemplo de uso do EF Core (paradigma Code-First):

// Definição do modelo de dados
public class Blog
{
    public int BlogId { get; set; }
    public string Url { 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; }
}

// Definição do contexto da base de dados
public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // Exemplo de configuração para SQLite
        optionsBuilder.UseSqlite("Data Source=blogging.db");
    }
}

// Exemplo de uso no código
// using (var context = new BloggingContext())
// {
//     // Adicionar dados
//     context.Blogs.Add(new Blog { Url = "http://example.com/blog" });
//     context.SaveChanges();
//
//     // Consultar dados
//     var blog = context.Blogs
//         .OrderBy(b => b.BlogId)
//         .First();
// }

EF Core é uma versão multiplataforma, leve e extensível do Entity Framework, recomendada para novas aplicações .NET.