EF Core如何连接SQL Server EF Core连接SQL Server教程

来源:这里教程网 时间:2026-02-21 17:38:29 作者:

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<br>dotnet add package Microsoft.EntityFrameworkCore.Tools<br>dotnet add package Microsoft.EntityFrameworkCore.Design

如果用 Visual Studio,也可通过“管理 NuGet 包”界面安装,注意选对项目(通常是启动项目或数据访问类库)。

配置连接字符串

把连接字符串写进 appsettings.json,别硬编码在代码里:

"ConnectionStrings": {<br>  "SqlServerDb": "Server=.;Database=MyAppDB;User Id=sa;Password=your_password;TrustServerCertificate=True;"<br>}

说明:

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);<br>builder.Services.AddDbContext<AppDbContext>(options =><br>    options.UseSqlServer(builder.Configuration.GetConnectionString("SqlServerDb")));

接着定义你的 AppDbContext 类(通常放在 Models 或 Data 文件夹下):

public class AppDbContext : DbContext<br>{<br>    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }<br><br>    public DbSet<Product> Products { get; set; }<br><br>    protected override void OnModelCreating(ModelBuilder modelBuilder)<br>    {<br>        modelBuilder.Entity<Product>().ToTable("Products");<br>    }<br>}

确保 Product 类有主键(如

public int Id { get; set; }
),EF Core 才能自动识别。

(可选)反向工程:从已有数据库生成模型

适合 DB First 场景。打开 程序包管理器控制台,确保默认项目是含 DbContext 的项目,运行:

Scaffold-DbContext "Server=.;Database=MyAppDB;User Id=sa;Password=your_password;TrustServerCertificate=True;" `<br>  Microsoft.EntityFrameworkCore.SqlServer `<br>  -OutputDir Models `<br>  -Context AppDbContext `<br>  -UseDatabaseNames `<br>  -NoOnConfiguring

参数说明:

-OutputDir Models
:生成的实体类放 Models 文件夹
-Context
:指定 DbContext 类名
-UseDatabaseNames
:表名/列名不转 PascalCase,保持原样
-NoOnConfiguring
:不生成硬编码连接字符串的
OnConfiguring
方法(推荐,让连接由 DI 控制)

执行后,Models 下会自动生成实体类和 DbContext,可直接使用。

基本上就这些。连通后,控制器里注入

AppDbContext
就能查数据了,比如
_context.Products.ToList()
。不复杂但容易忽略 TrustServerCertificate 或包版本不匹配的问题。

相关推荐