Reputation: 302
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?
Upvotes: 18
Views: 17491
Reputation: 10242
Just add following lines in Program.cs
await using var scope = app.Services.CreateAsyncScope();
await using var db = scope.ServiceProvider.GetService<DataContext>();
await db.Database.MigrateAsync();
Upvotes: 9
Reputation: 766
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();
Upvotes: 40