Search code examples
c#entity-frameworkasp.net-coreentity-framework-migrations

Run EF migrations on Startup in asp.net core 6 application


How can I run ef migrations on startup in asp.net 6 application.

This is my Program.cs

var builder = WebApplication.CreateBuilder(args);
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
var serverVersion = new MySqlServerVersion(new Version(8, 0, 23));
builder.Services.AddDbContext<MyContext>(x => x.UseMySql(connectionString, serverVersion)
            .LogTo(Console.WriteLine, LogLevel.Information)
            .EnableSensitiveDataLogging()
            .EnableDetailedErrors());

How can I execute MyContext.Database.Migrate() here?


Solution

  • Try below:

    var app = builder.Build();
    
    // omitted
    
    using (var scope = app.Services.CreateScope())
    {
        var services = scope.ServiceProvider;
    
        var context = services.GetRequiredService<MyContext>();    
        context.Database.Migrate();
    }
    
    // omitted
    
    app.Run();