通八洲科技

EF Core怎么处理数据库架构(Schema) EF Core HasDefaultSchema配置

日期:2025-12-19 00:00 / 作者:星降
EF Core 中默认 Schema 因数据库而异:SQL Server 为 dbo,PostgreSQL 为 public,SQLite/MySQL 不支持;推荐优先使用 HasDefaultSchema 全局配置,再以 ToTable 按需微调。

EF Core 处理数据库架构(Schema)的核心在于明确指定表所属的命名空间,尤其在 SQL Server、PostgreSQL 等支持多 Schema 的数据库中,这直接影响表的创建位置、查询路径和权限管理。默认行为因数据库而异,不能依赖“自动正确”。

HasDefaultSchema 是最常用也最省力的全局配置方式,它作用于整个模型,避免为每个实体重复写 schema 名。


默认 Schema 是什么?看数据库类型

如果你没显式设置,EF Core 会按数据库约定走。但一旦项目需要隔离环境(如 dev/test/prod 各用不同 schema),或团队规范要求统一前缀(如 sales.auth.),就必须主动干预。


三种指定 Schema 的方式,按推荐顺序


实际使用注意点


基本上就这些。用 HasDefaultSchema 打底 + 少量 ToTable(..., schema) 微调,是多数项目的稳妥选择。