EF Core 连接 SQL Server 的关键三步是:安装 Microsoft.EntityFrameworkCore.SqlServer、Tools 和 Design 三个 NuGet 包;在 appsettings.json 中配置含 TrustServerCertificate=True 的连接字符串;在 Program.cs 中通过 AddDbContext 注册 DbContext 并注入服务。

EF Core 连接 SQL Server 不难,关键在三步:装对包、配好连接字符串、注册 DbContext。下面按实际开发顺序讲清楚。
安装必需的 NuGet 包
项目需要至少三个核心包,.NET 6 及以上推荐用 dotnet CLI 安装(更稳定):
- Microsoft.EntityFrameworkCore.SqlServer:SQL Server 的 EF Core 提供程序
-
Microsoft.EntityFrameworkCore.Tools:支持迁移命令(
dotnet ef migrations add、update-database等) - Microsoft.EntityFrameworkCore.Design:设计时支持,生成实体类或迁移时必需
在项目根目录执行:
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
dotnet add package Microsoft.EntityFrameworkCore.Design
如果用 Visual Studio,也可通过“管理 NuGet 包”界面安装,注意选对项目(通常是启动项目或数据访问类库)。
配置连接字符串
把连接字符串写进 appsettings.json,别硬编码在代码里:
"ConnectionStrings": {
"SqlServerDb": "Server=.;Database=MyAppDB;User Id=sa;Password=your_password;TrustServerCertificate=True;"
}
说明:
-
Server=.表示本地 SQL Server 实例;若用命名实例,写成Server=.;InstanceName=SQLEXPRESS -
TrustServerCertificate=True是 .NET 6+ 默认要求(尤其本地开发),否则可能报证书错误 - 如用 Windows 身份验证,改用
Trusted_Connection=True;,删掉 User Id 和 Password
注册 DbContext 并注入服务
在 Program.cs(.NET 6+)中添加:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("SqlServerDb")));
接着定义你的 AppDbContext 类(通常放在 Models 或 Data 文件夹下):
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptionsoptions) : base(options) { }
public DbSetProducts { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity().ToTable("Products");
}
}
确保 Product 类有主键(如 public int Id { get; set; }),EF Core 才能自动识别。
(可选)反向工程:从已有数据库生成模型
适合 DB First 场景。打开 程序包管理器控制台,确保默认项目是含 DbContext 的项目,运行:
Scaffold-DbContext "Server=.;Database=MyAppDB;User Id=sa;Password=your_password;TrustServerCertificate=True;" `
Microsoft.EntityFrameworkCore.SqlServer `
-OutputDir Models `
-Context AppDbContext `
-UseDatabaseNames `
-NoOnConfiguring
参数说明:
-
-OutputDir Models:生成的实体类放 Models 文件夹 -
-Context:指定 DbContext 类名 -
-UseDatabaseNames:表名/列名不转 PascalCase,保持原样 -
-NoOnConfiguring:不生成硬编码连接字符串的OnConfiguring方法(推荐,让连接由 DI 控制)
执行后,Models 下会自动生成实体类和 DbContext,可直接使用。
基本上就这些。连通后,控制器里注入 AppDbContext 就能查数据了,比如 _context.Products.ToList()。不复杂但容易忽略 TrustServerCertificate 或包版本不匹配的问题。










