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.ToolsTambé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 InitialCreateApós a execução, uma pasta Migrations aparecerá no projeto com dois arquivos:
XXXXXXXXXXXXXX_InitialCreate.cs— classe de migração com os métodosUp()(o que alterar) eDown()(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 updateO 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 Também na biblioteca
JsonWebToken para JavaScript (Node.js): guia completo com exemplos
Guia completo de ts-pattern para TypeScript com exemplos práticos
Programação Reativa em C# (.NET) — Observable, Rx.NET e LINQ
Geração de PDF em Kotlin: bibliotecas e ferramentas (iText, Apache PDFBox)