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

如何无需Startup类将.NET Core 2.1代码迁移到.NET 6 Program.cs

将.NET Core 2.1数据库初始化逻辑迁移到.NET 6(无Startup类)

直接改用.NET 6的顶级语句风格即可,无需保留Startup类,以下是改造后的完整代码:

var builder = WebApplication.CreateBuilder(args);

// 在此添加你的服务配置(对应原Startup.cs的ConfigureServices方法)
// 示例:builder.Services.AddDbContext<YourDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
// 示例:builder.Services.AddControllers();

var app = builder.Build();

// 数据库初始化核心逻辑
using (var scope = app.Services.CreateScope())
{
    var services = scope.ServiceProvider;
    try
    {
        SeedData.InitializeAsync(services).Wait();
    }
    catch (Exception ex)
    {
        var logger = services.GetRequiredService<ILogger<Program>>();
        logger.LogError(ex, "An error occurred seeding the database.");
    }
}

// 在此添加中间件配置(对应原Startup.cs的Configure方法)
// 示例:app.UseRouting(); app.MapControllers(); app.UseAuthorization();

app.Run();

关键改动说明

  • 移除了原代码中的Main方法和CreateWebHostBuilder,使用.NET 6引入的顶级语句简化程序结构
  • 用WebApplication.CreateBuilder替代原有的WebHost.CreateDefaultBuilder,这是.NET 6的标准应用构建方式
  • 数据库初始化逻辑保持原执行时机:在应用构建完成后、启动前执行,确保种子数据在服务运行前完成初始化
  • 原InitializeDatabase方法的核心逻辑直接内联,若需要复用也可封装为静态方法,传入app.Services即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:27:05