Migrações de banco de dados em C# (.NET): Entity Framework Migrations

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

Migrações de banco de dados em C# (.NET) com Entity Framework



No desenvolvimento de aplicações em C# (.NET), uma das tarefas principais é a sincronização do modelo de dados (classes C#) com o esquema do banco de dados. Alterar manualmente tabelas, colunas e relacionamentos é um processo trabalhoso e propenso a erros. A solução para este problema são as migrações de banco de dados, um mecanismo embutido do Entity Framework (EF) Core ou Entity Framework 6. As migrações permitem aplicar automaticamente alterações à estrutura do BD com base em mudanças no código, preservando os dados existentes.



O que são migrações e para que servem?



Uma migração é um conjunto de instruções (código em C#) que descrevem como alterar o esquema do banco de dados de uma versão para outra. Em vez de escrever scripts SQL manualmente, o desenvolvedor altera os modelos C# (por exemplo, adiciona uma nova propriedade à classe), e o EF gera um arquivo de migração. Em seguida, esse arquivo é aplicado ao banco de dados.



  • Automação: Elimina a escrita manual de SQL.
  • Versionamento: Cada migração é um arquivo separado com carimbo de data/hora, permitindo reverter alterações.
  • Segurança dos dados: Ao adicionar uma coluna, o EF não exclui linhas existentes (a menos que especificado de outra forma).
  • Trabalho em equipe: Todos os membros da equipe aplicam as mesmas migrações, evitando divergências de esquema.


Preparação do projeto



Para trabalhar com migrações, é necessário ter o pacote Microsoft.EntityFrameworkCore.Tools (para EF Core) ou EntityFramework (para EF6) instalado. Instalação via NuGet:



// Para EF Core (via Package Manager Console)Install-Package Microsoft.EntityFrameworkCore.Tools

// Ou via .NET CLIdotnet add package Microsoft.EntityFrameworkCore.Tools


Também será necessário um contexto de banco de dados, herdado de DbContext. Exemplo de modelo simples:



public class Blog{    public int Id { get; set; }    public string Title { get; set; }    public string Content { get; set; }}

public class AppDbContext : DbContext{ public DbSet<Blog> Blogs { get; set; }

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("Server=(localdb)\\\\mssqllocaldb;Database=MyBlogDb;Trusted_Connection=True;"); }}


Criando a primeira migração



Abra o Package Manager Console (no Visual Studio: View -> Other Windows -> Package Manager Console) ou use o .NET CLI. Execute o comando:



// Via PMCAdd-Migration InitialCreate

// Ou via CLIdotnet ef migrations add InitialCreate


Após a execução, uma pasta Migrations aparecerá no projeto com dois arquivos:

  • XXXXXXXXXXXXXX_InitialCreate.cs — classe de migração com os métodos Up() (o que alterar) e Down() (como reverter).
  • AppDbContextModelSnapshot.cs — um snapshot do modelo atual.


Aplicando a migração ao banco de dados



Para criar ou atualizar o BD para a versão mais recente, execute:



// Via PMCUpdate-Database

// Via CLIdotnet ef database update


O EF executará todas as migrações não aplicadas em ordem. Se o banco de dados não existir, ele será criado automaticamente.



Adicionando um novo campo e criando uma migração



Suponha que decidimos adicionar à modelo Blog a propriedade CreatedAt:



public class Blog{    public int Id { get; set; }    public string Title { get; set; }    public string Content { get; set; }    public DateTime CreatedAt { get; set; } // novo campo}


Agora criamos uma nova migração:



Add-Migration                    

Recommendations