Introdução ao EF Core
Neste tutorial, você criará um aplicativo de console do .NET Core que executa acesso a dados em um banco de dados SQLite usando o Entity Framework Core.
Você pode seguir o tutorial usando o Visual Studio no Windows ou usando a CLI do .NET no Windows, macOS ou Linux.
Exiba o exemplo deste artigo no GitHub.
Pré-requisitos
Instale o software a seguir:
Crie um novo projeto
dotnet new console -o EFGetStarted
cd EFGetStarted
Instalar o Entity Framework Core
Para instalar o EF Core, instale o pacote dos provedores do banco de dados do EF Core para o qual você deseja direcionar. Este tutorial usa SQLite porque ele é executado em todas as plataformas que dão suporte a .NET. Para obter uma lista de provedores disponíveis, veja Provedores de Banco de Dados.
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
Criar o modelo
Defina uma classe de contexto e classes de entidade que compõem o modelo.
- No diretório do projeto, crie Model.cs com o seguinte código
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
public string DbPath { get; }
public BloggingContext()
{
var folder = Environment.SpecialFolder.LocalApplicationData;
var path = Environment.GetFolderPath(folder);
DbPath = System.IO.Path.Join(path, "blogging.db");
}
// The following configures EF to create a Sqlite database file in the
// special "local" folder for your platform.
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlite($"Data Source={DbPath}");
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; } = new();
}
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; }
}
O EF Core também pode fazer a engenharia reversa de um modelo de um banco de dados existente.
Dica: esse aplicativo intencionalmente mantém a simplicidade das coisas para maior clareza. As cadeias de conexão não devem ser armazenadas no código para aplicativos de produção. Também pode ser interessante dividir cada classe C# em um arquivo próprio.
Criar o banco de dados
As etapas a seguir usam migrações para criar um banco de dados.
Execute os seguintes comandos:
dotnet tool install --global dotnet-ef dotnet add package Microsoft.EntityFrameworkCore.Design dotnet ef migrations add InitialCreate dotnet ef database update
Isso instala o dotnet ef e o pacote de design necessário para executar o comando em um projeto. O comando
migrations
realiza o scaffolding de uma migração e cria o conjunto inicial de tabelas para o modelo. O comandodatabase update
cria o banco de dados e aplica a nova migração a ele.
Criar, ler, atualizar e excluir
Abra Program.cs e substitua o conteúdo pelo código a seguir:
using System; using System.Linq; using var db = new BloggingContext(); // Note: This sample requires the database to be created before running. Console.WriteLine($"Database path: {db.DbPath}."); // Create Console.WriteLine("Inserting a new blog"); db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" }); db.SaveChanges(); // Read Console.WriteLine("Querying for a blog"); var blog = db.Blogs .OrderBy(b => b.BlogId) .First(); // Update Console.WriteLine("Updating the blog and adding a post"); blog.Url = "https://devblogs.microsoft.com/dotnet"; blog.Posts.Add( new Post { Title = "Hello World", Content = "I wrote an app using EF Core!" }); db.SaveChanges(); // Delete Console.WriteLine("Delete the blog"); db.Remove(blog); db.SaveChanges();
Executar o aplicativo
dotnet run
Próximas etapas
- Siga o Tutorial do ASP.NET Core para usar o EF Core em um aplicativo Web
- Saiba mais sobre as expressões de consulta LINQ
- Configure seu modelo para especificar configurações como obrigatório e comprimento máximo
- Use Migrações para atualizar o esquema do banco de dados após alterar seu modelo