Entity Framework Core para C# (.NET): guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é Entity Framework Core e por que ele é necessário

\n

Entity Framework Core (EF Core) é um mapeador objeto-relacional (ORM) moderno para a plataforma .NET, desenvolvido pela Microsoft. Ele permite que os desenvolvedores trabalhem com bancos de dados usando objetos .NET, eliminando a necessidade de escrever grande parte do código de acesso a dados.

\n\n

EF Core é uma versão leve, extensível e multiplataforma do Entity Framework. Ele suporta vários SGBDs, incluindo SQL Server, SQLite, PostgreSQL, MySQL, Oracle e outros.

\n\n

Principais recursos do EF Core:

\n
    \n
  • Criação e atualização automática do esquema do banco de dados com base no modelo (Code First)
  • \n
  • Execução de consultas ao banco de dados usando LINQ (Language Integrated Query)
  • \n
  • Rastreamento automático de alterações em objetos e geração de comandos SQL para atualização de dados
  • \n
  • Suporte a migrações para gerenciar alterações no esquema do banco de dados
  • \n
  • Suporte a relacionamentos entre entidades (um-para-um, um-para-muitos, muitos-para-muitos)
  • \n
  • Carregamento lento, ansioso e explícito de dados relacionados
  • \n
\n\n

Instalação do Entity Framework Core

\n

A instalação do EF Core é feita através do NuGet Package Manager. Diferente do Python, aqui se usa dotnet add package ou o gerenciador de pacotes do Visual Studio.

\n\n

Instalação via .NET CLI:

\n
dotnet add package Microsoft.EntityFrameworkCore\ndotnet add package Microsoft.EntityFrameworkCore.SqlServer\ndotnet add package Microsoft.EntityFrameworkCore.Tools
\n\n

Instalação para PostgreSQL (Npgsql):

\n
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
\n\n

Instalação para SQLite:

\n
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
\n\n

Instalação para MySQL:

\n
dotnet add package Pomelo.EntityFrameworkCore.MySql
\n\n

Início rápido com exemplo de código

\n

Vamos criar um aplicativo de console simples para trabalhar com um banco de dados de livros.

\n\n

1. Criando o modelo de dados:

\n
public class Book\n{\n    public int Id { get; set; }\n    public string Title { get; set; }\n    public string Author { get; set; }\n    public int Year { get; set; }\n    public decimal Price { get; set; }\n}\n\npublic class Author\n{\n    public int Id { get; set; }\n    public string Name { get; set; }\n    public List<Book> Books { get; set; } = new();\n}
\n\n

2. Criando o contexto do banco de dados:

\n
public class LibraryContext : DbContext\n{\n    public DbSet<Book> Books { get; set; }\n    public DbSet<Author> Authors { get; set; }\n\n    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n    {\n        optionsBuilder.UseSqlite("Data Source=library.db");\n    }\n}
\n\n

3. Usando EF Core para trabalhar com dados:

\n
using var context = new LibraryContext();\ncontext.Database.EnsureCreated(); // Cria o banco de dados, se não existir\n\n// Adicionando dados\nvar author = new Author { Name = "Lev Tolstói" };\nauthor.Books.Add(new Book { Title = "Guerra e Paz", Year = 1869, Price = 1500m });\nauthor.Books.Add(new Book { Title = "Anna Karenina", Year = 1877, Price = 1200m });\n\ncontext.Authors.Add(author);\ncontext.SaveChanges();\n\n// Lendo dados\nvar books = context.Books\n    .Where(b => b.Year > 1850)\n    .OrderBy(b => b.Year)\n    .ToList();\n\nforeach (var book in books)\n{\n    Console.WriteLine($"{book.Title} ({book.Year})");\n}
\n\n

Principais métodos e funções do Entity Framework Core

\n\n

1. Add

\n

Descrição: Adiciona uma nova entidade ao contexto no estado Added. Ao chamar SaveChanges(), um comando INSERT será executado.

\n

Parâmetros:

\n
    \n
  • object entity

Recommendations