.net 8项目使用 EF Core 链接 SQL Server 数据库

首先我们需要下载三个依赖包

Microsoft.EntityFrameworkCore.Tools

EntityFrameworkCore.sqlserver

Microsoft.EntityFrameworkCore.Design

鼠标右键点击 依赖项下面的包,选择 管理 NuGet 程序包(N) 

然后点击 浏览 ,把上面的三个依赖包复制粘贴上去,选择8.0.0版本的安装

有这个就接受

在这些位置都可以看到已安装的包

然后我们要把数据库连接配到这里来

"ConnectionStrings": {
"DBConnection": "Server=①;Database=②;User Id=③;Password=④;TrustServerCertificate=True",
}

 这里对应的值是这里的数据

接着我们需要,整理一段命令

Scaffold-DbContext -Connection "Server=①;Database=②;User Id=③;Password=④;TrustServerCertificate=True" -Provider Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -ContextDir Context -Context DBST -UseDatabaseNames -NoOnConfiguring 

这条 Scaffold-DbContext 命令用于 EF Core 的反向工程(Database First 模式),从现有的 SQL Server 数据库生成实体类和 DbContext 代码。以下是每个参数的详细含义和作用:

完整命令拆解

powershell
Scaffold-DbContext `
-Connection "Server=①;Database=②;User Id=③;Password=④;TrustServerCertificate=True" `
-Provider Microsoft.EntityFrameworkCore.SqlServer `
-OutputDir Models `
-ContextDir Context `
-Context DBST `
-UseDatabaseNames `
-NoOnConfiguring

参数详细说明

参数含义与作用示例 / 补充说明
-Connection 数据库连接字符串,用于让 EF Core 连接到你的 SQL Server 数据库 包含服务器地址(Server)、数据库名(Database)、登录账号(User Id)、密码(Password),TrustServerCertificate=True 用于跳过 SSL 证书验证(开发环境常用,生产环境需谨慎)
-Provider 指定 EF Core 数据库提供程序(告诉 EF Core 用哪种数据库) 这里用 Microsoft.EntityFrameworkCore.SqlServer,对应 SQL Server。如果是 MySQL 则用 Pomelo.EntityFrameworkCore.MySql 等
-OutputDir 指定生成的实体类文件的输出目录(相对于项目根目录) 会在项目中创建 / 使用 Models 文件夹,存放生成的数据库表对应的实体类(比如 Student.csCourse.cs 等)
-ContextDir 指定生成的 **DbContext 类文件 ** 的输出目录(相对于项目根目录) 会在项目中创建 / 使用 Context 文件夹,专门放数据库上下文类(DBST.cs
-Context 指定生成的 DbContext 类的名称 生成的上下文类名是 DBST(替代默认的命名,更贴合你的项目)
-UseDatabaseNames 强制生成的实体类、属性名称与数据库表、列名完全一致 默认 EF Core 会将数据库名(如 t_student_info)转成 Pascal 命名(TStudentInfo),加此参数后保持原名(t_student_info 对应类名 t_student_info
-NoOnConfiguring 不生成 DbContext 中的 OnConfiguring 方法 通常我们会通过依赖注入(DI)配置数据库连接,而非硬编码在 OnConfiguring,加此参数后,生成的 DbContext 不会包含自己写死连接字符串的逻辑,更符合 “配置与代码分离” 的最佳实践
 

 

 

这个命令在这里执行

点击 工具 ,点击 NuGet包管理,点击 程序包管理控制台

会出现一个这个框

我们把命令Scaffold-DbContext -Connection "Server=①;Database=②;User Id=③;Password=④;TrustServerCertificate=True" -Provider Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -ContextDir Context -Context DBST -UseDatabaseNames -NoOnConfiguring  放到这里,按回车

值得注意的是如果再次执行的时候,需要在后面加一个 -Force 意思是EF Core 为了避免意外覆盖你的现有文件,需要添加 -Force 参数来强制覆盖

接下来我们要在这里写上这个

builder.Services.AddDbContext<DBST>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DBConnection")));

  • 作用:将 DBST 类(继承自 DbContext)注册为服务,使其可通过依赖注入在控制器、服务中使用。
  • 依赖注入 (DI):ASP.NET Core 的核心机制,自动管理对象的生命周期和依赖关系。
  • builder 是 WebApplicationBuilder 实例(.NET 6+ 的新语法)。
  • Services 是依赖注入容器,用于注册应用所需的服务。

  AddDbContext<DBST>()

  • DBST:自定义的数据库上下文类,继承自 DbContext,负责与数据库交互。
    csharp
    public class DBST : DbContext
    {
        public DbSet<Student> Students { get; set; }
        // 其他 DbSet 属性...
    }

  options.UseSqlServer(...)

  • 数据库提供商:指定使用 SQL Server 数据库。
  • 若用其他数据库(如 MySQL),需替换为对应方法:
    csharp
    options.UseMySql(...)  // MySQL
    options.UseNpgsql(...) // PostgreSQL

  builder.Configuration.GetConnectionString("DBConnection")

  • 连接字符串:从配置文件(如 appsettings.json)读取数据库连接信息。

 

posted @ 2025-06-25 20:23  张筱菓  阅读(510)  评论(0)    收藏  举报