.NET 6中ASP.NET Core Web API配置SQL Server连接字符串及AddDbContext未识别问题咨询
在.NET 6的ASP.NET Core Web API中配置SQL Server连接字符串
嗨,我太懂你这种适应新框架结构的困惑了——.NET 6引入了顶级语句和简化的Program.cs结构,把原来的Startup类和Program类合并到了一起,原来的写法自然就不适用了,别担心,我给你一步步讲清楚正确的配置方式:
核心变化说明
在.NET 6里,我们不再需要Startup类的ConfigureServices和Configure方法,而是直接在Program.cs里用WebApplication.CreateBuilder(args)创建应用构建器,通过builder.Services来注册服务(这就对应原来Startup里的IServiceCollection),通过builder.Configuration来读取配置(和原来的Configuration完全一样)。
正确配置DbContext的代码示例
直接在Program.cs里这样写就可以了:
var builder = WebApplication.CreateBuilder(args); // 先添加Web API的控制器服务(按需保留) builder.Services.AddControllers(); // 重点:配置你的DbContext,和原来的逻辑一致,只是调用入口变了 builder.Services.AddDbContext<DEMOWTSSPortalContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))); // 构建应用实例 var app = builder.Build(); // 配置中间件(比如授权、路由,按需添加) app.UseAuthorization(); // 映射控制器路由 app.MapControllers(); // 启动应用 app.Run();
连接字符串的配置
连接字符串还是和之前一样,放在appsettings.json里,格式完全没变:
{ "ConnectionStrings": { "DefaultConnection": "Server=你的SQL服务器地址;Database=DEMOWTSSPortal;Trusted_Connection=True;TrustServerCertificate=True;" } }
必要的NuGet包提醒
别忘了安装EF Core的SQL Server提供者包,否则UseSqlServer会找不到:
- 核心包:
Microsoft.EntityFrameworkCore.SqlServer - 如果需要使用EF Core迁移工具,还要安装:
Microsoft.EntityFrameworkCore.Design
你可以通过NuGet包管理器安装,或者用命令行:
Install-Package Microsoft.EntityFrameworkCore.SqlServer Install-Package Microsoft.EntityFrameworkCore.Design
额外注意点
- 确保你的
DEMOWTSSPortalContext类继承自DbContext,并且如果有自定义构造函数,要接受DbContextOptions<DEMOWTSSPortalContext>参数,这样依赖注入才能正确实例化它:
public class DEMOWTSSPortalContext : DbContext { public DEMOWTSSPortalContext(DbContextOptions<DEMOWTSSPortalContext> options) : base(options) { } // 你的DbSet定义... }
内容的提问来源于stack exchange,提问作者congying pan
相关产品推荐
相关产品推荐

