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

如何使用C#编写DbContext与数据库连接

主要步骤:编写实体类->映射关系->与数据库的连接

详细步骤请看使用C#编写微信小程序后端

这两段代码是 Entity Framework Core (EF Core) 中 DbContext 类的重要重写方法,用于配置数据库连接和实体模型映射,具体含义如下:

1. OnConfiguring 方法

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{if (!optionsBuilder.IsConfigured){var connectionString = _configuration.GetConnectionString("DefaultConnection");optionsBuilder.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString));}
}

作用:配置数据库连接和 EF Core 的上下文选项(告诉 EF Core 如何连接数据库)。

  • optionsBuilder.IsConfigured:检查当前上下文是否已经通过其他方式(比如依赖注入)配置过连接。如果未配置(!IsConfigured),则执行后续逻辑。
  • _configuration.GetConnectionString("DefaultConnection"):从配置文件(如 appsettings.json)中读取名为 DefaultConnection 的数据库连接字符串(通常包含数据库地址、账号、密码等信息)。
  • optionsBuilder.UseMySql(...):指定 EF Core 使用 MySQL 数据库,并传入连接字符串和自动检测的 MySQL 服务器版本(确保与数据库版本兼容)。

简单说,这个方法的作用是:告诉 EF Core 要连接哪个数据库,以及如何连接

2. OnModelCreating 方法

protected override void OnModelCreating(ModelBuilder modelBuilder)
{base.OnModelCreating(modelBuilder);// 可在此处添加实体的配置(如主键、索引、关系等)
}

作用:配置实体与数据库表之间的映射关系(告诉 EF Core 实体类如何对应到数据库表)。

  • base.OnModelCreating(modelBuilder):调用基类的默认实现,确保基础配置生效。
  • 注释部分提示:可以在这里通过 modelBuilder 对实体进行精细化配置,比如:
    • 自定义实体对应的表名(默认是实体类名,可通过 ToTable("表名") 修改)。
    • 配置主键(比如复合主键,默认是 Id 字段)。
    • 配置字段长度、是否为必填项、默认值等。
    • 配置实体之间的关系(一对一、一对多、多对多)。
    • 添加索引(优化查询性能)。

简单说,这个方法的作用是:定制实体类和数据库表的映射规则,解决数据注解([Key][Column] 等)无法覆盖的复杂配置场景。

总结

  • OnConfiguring:负责 “连接数据库” 的配置(告诉 EF 连接哪里、用什么数据库)。
  • OnModelCreating:负责 “实体与表的映射规则” 的配置(告诉 EF 实体如何对应到表结构)。

这两个方法是 EF Core 上下文(DbContext)的核心,确保程序能正确操作数据库。

http://www.dtcms.com/a/532500.html

相关文章:

  • 从一到无穷大 #52:Lakehouse 不适用时序?打破范式 —— Catalog 架构选型复盘
  • 机器学习 (1) 监督学习
  • 从哪里找网络推广公司网站优化 毕业设计
  • Java如何将数据写入到PDF文件
  • 开发板网络配置
  • 14天备考软考-day1: 计组、操作系统(仅自用)
  • 企业网站模板包含什么有什么软件可以做网站
  • .gitignore 不生效问题——删除错误追踪的文件
  • 深度学习优化器详解
  • 做企业公示的数字证书网站wordpress有识图接口吗
  • 中国商标注册申请官网百度蜘蛛池自动收录seo
  • GitHub 热榜项目 - 日榜(2025-10-26)
  • 数据分析:指标拆解、异动归因类题目
  • 做网站需要那些软件设计建网站
  • Gorm(十二)乐观锁和悲观锁
  • neo4j图数据库笔记
  • 网页网站设计公司有哪些网站排名有什么用
  • 泉州做网站优化哪家好微信推广平台哪里找
  • 如何制作收费网站百度收录个人网站是什么怎么做
  • VsCode + Wsl:终极开发环境搭建指南
  • 深度学习——Logistic回归中的梯度下降法
  • 中国住房和城乡建设网网站学习网站大全
  • 【Android】ViewPager2实现手/自动轮播图
  • 产品营销网站可以做英语翻译兼职的网站
  • jQuery Mobile 图标:全面解析与应用指南
  • Java(File)
  • AI 翻译入门指南:机器如何理解语言
  • 怎样上传网站程序网站数据库怎么配置
  • MySQL相关知识查询表中的内容(第三次作业)
  • h5游戏免费下载:过马路小游戏