当前位置: 首页 > news >正文

.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.Tools

EntityFrameworkCore.sqlserver

Microsoft.EntityFrameworkCore.Design

备注:本项目使用的是VS2022, .Net8.0,所以下载EF Core时选择8.0.0版本

第2步:在 appsettings.json 中加入数据库连接字符串

"ConnectionStrings": { "DBConnection": "Server=192.168.XXX.XXX;Database=XXXXX;User Id=XXX;Password=XXXXXX;TrustServerCertificate=True" }

第3步:在 .csproj 项目文件中加入控制全球化的配置

第4步:整理命令语名,为生成实例类作准备

完整命令如下:

Scaffold-DbContext -Connection "Server=192.168.XX.XX;Database=XXX;User Id=XXX;Password=XXXXXX;TrustServerCertificate=True" -Provider Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -ContextDir Context -Context DBST -UseDatabaseNames -NoOnConfiguring

参数详解:

参数详解
参数作用补充说明
Scaffold-DbContextEF Core 的反向工程采用DbFirst 模式
-Connection数据库连接字符串包含服务器地址、数据库名、登录账号、密码,TrustServerCertificate=True用于跳过 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(...) // MySQL
options.UseNpgsql(...) // PostgreSQL

http://www.jsqmd.com/news/1391634/

相关文章:

  • DXVK游戏启动报错“DirectX版本不支持“?一份从排查到修复的避坑指南
  • 商标设计注册哪家便宜又靠谱?比价避坑指南
  • 别让十年微博静默消失:Speechless 免费 Chrome 插件教你完整备份 PDF
  • Linux 分区挂载
  • DDrawCompat 快速上手完整指南:让老 DirectX 游戏在现代 Windows 上重获新生
  • Searchjoy开发者指南:自定义搜索分析指标的实用技巧
  • 从理论到实践:使用Noisy Nodes创建Unity中的自然纹理与动态效果
  • 学习网站建设的心得体会:从零开始搭建个人博客,踩坑无数后的真诚经验分享
  • 156、Zephyr RTOS安全基础:安全架构概述
  • LeetCode 904:水果成篮(滑动窗口) —— 题解
  • C/C++八股文:说清楚 memcpy 和 memmove
  • 恋活HF Patch完整使用指南:免费汉化补丁与200+插件,如何一次装齐再也不缺模组
  • 为什么你花大钱建的网站没人看?揭秘网站建设酷隆背后的流量逻辑与避坑指南
  • MSVCP140.dll 反复缺失怎么办:用 VisualCppRedist AIO 一键配齐 VC++ 运行库
  • 在流量焦虑与算法内卷的今天,回归“以人为本网站建设空间出租”才是中小企业破局的真正捷径与长期主义选择
  • 零基础小白必看网站建设教程ppt:从0到1搭建企业官网的完整实操指南
  • 如何判断一个网站是否用织梦建设的:SEO技巧与源码痕迹全解析
  • AI+BI时代的数据合规三重门:传输、存储、消费如何一体化管控
  • workbuddy办公重磅更新!资料库升级三大王炸功能,零基础做动态网站
  • B站视频解析3步走:一个PHP工具帮你快速拿到视频直链
  • 建立你的“父母标尺”:这件事,如果换成我父母,他们会怎么对我?父母会怎么做?
  • 【AI-RAN】硬件产品:DELL 前传交换机
  • 【AI-RAN】硬件产品:VIAVI QG2
  • 黑苹果从零到一:Windows用户必读的OpenCore安装完整指南
  • 2026年长寿命LED防爆灯直供哪里找:合规厂家推荐与选型指南 - 全域品牌推荐
  • 从入门到精通的三重境界:用 douyin-downloader 玩转抖音视频批量下载
  • 如何拿回你的全部数据?InfoSpider开源爬虫工具箱完整上手教程
  • 三年以后再看,今天最该做的是出口升维
  • 深入了解无锡市住房建设局网站官方服务指南及最新政策解读
  • RAG文档明明检索到了,为什么还是排不到前面?RRF 排名算法一次讲清楚