OnModelCreating 是 EF Core 模型配置的统一入口,必须在自定义 DbContext 中重写并调用 base.OnModelCreating;通过 ModelBuilder 使用 Fluent API 配置实体映射、关系、索引、种子数据等,顺序无关但建议按逻辑分组;部分简单配置可用数据注解替代,但复杂场景必须依赖 Fluent API。
OnModelCreating 是 EF Core 模型配置的统一入口,所有通过 Fluent API 进行的实体映射、关系定义、索引、种子数
据等配置,都必须在这个方法里完成。它在 DbContext 初始化模型时被自动调用一次,只执行一次,不参与运行时查询。
你需要在自定义的 DbContext 类中重写该方法,并显式调用 base.OnModelCreating(modelBuilder),否则部分默认约定或提供程序扩展(如 Identity、达梦适配器)可能失效。
ModelBuilder 是 Fluent API 的操作主体,它提供链式方法对实体、属性、关系等进行声明式配置。常见场景包括:
Fluent API 的调用顺序没有强制依赖。比如先配外键再配关系,或先设索引再设主键,EF Core 内部会统一解析成逻辑一致的模型。但为可读性,建议按“实体 → 属性 → 关系 → 索引 → 种子数据”分组组织代码。
部分简单映射可用数据注解替代,比如 [Table("users")]、[Column("user_name")]、[Index(nameof(Email), IsUnique = true)]。但注解能力有限:
基本上就这些。OnModelCreating 不是魔法,它只是把你的意图翻译成 EF Core 能理解的元数据模型——写得清楚,迁移才准,运行才稳。