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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值