如何使用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)的核心,确保程序能正确操作数据库。
