O Migration existente no .Net FullFramework possui alguns recursos que até no momento desse post não estão presentes no .Net Core.
Um desses recursos é o auto migration, que facilita e automatiza a atualização da base de dados em produção. Claro, isso deve seguir alguns procedimento de homologação antes e um processo de rollback em caso de falhas (o que poderia ocorrer com uma atualização manual).
Para habilitar o auto migration no .Net Core serão necessários poucas linhas de código. Isso vai garantir a aplicação automática das mudanças no banco de dados assim que a aplicação for carregada.
Vamos considerar uma aplicação MVC Core, iniciada do zero, apenas ativando a autenticação individual para que já tenhamos a estrutura básica da aplicação web e um contexto pré-configurado.
Serão necessárias apenas algumas configurações no arquivo appsettings.json para que sejam configurados os dados de acesso ao banco de dados.
Começamos alterando o arquivo Program.cs, importando os seguintes namespaces (apenas ajustando o nome do contexto):
using Microsoft.Extensions.DependencyInjection;
using Microsoft.EntityFrameworkCore;
using Microsoft.AspNetCore;
Continuamos alterando os métodos padrão para o seguinte código:
public static void Main(string[] args)
{
var host = CreateWebHostBuilder(args).Build();
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var context = services.GetRequiredService<NOME_DO_CONTEXTO_DA_APLICACAO>();
context.Database.Migrate();
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "Erro ao atualizar banco.");
}
}
host.Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
Com isso, basta realizar as alterações e criação de novas entidades, executar o comando Add-Migration e ao executar a aplicação verá que a atualização ocorrerá automaticamente.
Até a próxima.