You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET Core 6应用启动时执行EF migrations?

ASP.NET 6 启动时自动执行EF Core Migrations的修改方案

你只需要在现有服务注册的代码后,构建WebApplication实例,通过依赖注入作用域拿到配置完成的MyContext实例,再执行Migrate方法即可,完整修改后的代码如下:

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());

// 新增执行迁移的代码开始
var app = builder.Build();

// 创建服务作用域获取已完成配置的DbContext实例
using var scope = app.Services.CreateScope();
var dbContext = scope.ServiceProvider.GetRequiredService<MyContext>();
// 执行迁移操作
dbContext.Database.Migrate();

// 原有业务的中间件配置、路由配置请写在这之后
// 例如 app.MapControllers(); 等业务配置代码

app.Run();
// 新增代码结束

注意事项

  • 该方案适合单实例部署场景/开发环境使用,多实例生产环境不建议直接在应用启动时执行迁移,可能出现并发执行迁移导致的锁库问题,生产环境建议单独执行迁移脚本
  • Migrate()方法会自动比对数据库现有结构和项目中的迁移文件,自动执行所有未应用的迁移,若目标数据库不存在也会自动创建
  • 执行前请确保你已经通过EF Core工具生成了对应的迁移文件,且项目引用了Microsoft.EntityFrameworkCore.Tools相关包

内容的提问来源于stack exchange,提问作者Aishwarya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:24:06