.NetCore项目使用EF Core操作SQL Server

📅 2026/8/14 12:28:16
.NetCore项目使用EF Core操作SQL Server
Entity Framework Core (EF Core) 已成为 .NET 开发中数据访问的基石工具为开发人员提供了强大而多功能的解决方案。随着 .NET 8 和 C# 10 中引入的改进开发人员现在可以使用更丰富的功能和增强功能从而进一步增强了 EF Core 的功能。EF有三种开发模式CodeFirst、ModelFirst、DbFirst这三种根据业务需求及个人偏好用的相对比较多的是DbFirst和CodeFirst现在EF Core推荐使用CodeFirst的方式进行项目开发当然也可以通过反向工程的方式以数据库设计为先。以VS2022 和 .Net8.0 做一个 .netcore webapi为例EF采用 DbFisrt开发模式第1步 使用NuGet包管理器安装以下三个依赖项Microsoft.EntityFrameworkCore.ToolsEntityFrameworkCore.sqlserverMicrosoft.EntityFrameworkCore.Design备注本项目使用的是VS2022, .Net8.0,所以下载EF Core时选择8.0.0版本第2步在 appsettings.json 中加入数据库连接字符串ConnectionStrings: { DBConnection: Server192.168.XXX.XXX;DatabaseXXXXX;User IdXXX;PasswordXXXXXX;TrustServerCertificateTrue }第3步在 .csproj 项目文件中加入控制全球化的配置第4步整理命令语名为生成实例类作准备完整命令如下Scaffold-DbContext -Connection Server192.168.XX.XX;DatabaseXXX;User IdXXX;PasswordXXXXXX;TrustServerCertificateTrue -Provider Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -ContextDir Context -Context DBST -UseDatabaseNames -NoOnConfiguring参数详解参数详解参数作用补充说明Scaffold-DbContextEF Core 的反向工程采用DbFirst 模式-Connection数据库连接字符串包含服务器地址、数据库名、登录账号、密码TrustServerCertificateTrue用于跳过 SSL 证书验证开发环境常用生产环境需谨慎-Provider指定 EF Core 数据库提供程序这里用Microsoft.EntityFrameworkCore.SqlServer对应 SQL Server。如果是 MySQL 则用Pomelo.EntityFrameworkCore.MySql等-OutputDir指定生成的实体类文件的输出目录相对于项目根目录会在项目中创建 / 使用Models文件夹存放生成的数据库表对应的实体类-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不会包含自己写死连接字符串的逻辑更符合 “配置与代码分离” 的最佳实践第5步执行命令生成实体类和上下文类点击 工具 -- NuGet包管理器 ---程序包管理控制台 把第4步整理好的命令得到到控制台生成成功后项目的架构中会多出Context 和 Mideks文件夹及相应的类需要指出的是如果再次执行的时候需要在后面加一个 -Force 意思是EF Core 为了避免意外覆盖你的现有文件而默认采取不覆盖的策略需要添加 -Force 参数来实现强制覆盖。第6步在Program.cs文件中将 DBST 类注册为服务。使其可通过依赖注入在控制器、服务中使用说明options.UseSqlServer(...) 作用 数据库提供商指定使用 SQL Server 数据库。若用其他数据库如 MySQL需替换为对应方法options.UseMySql(...) // MySQLoptions.UseNpgsql(...) // PostgreSQL