You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Entity Framework未生成OrgProperty与SystemProperty表却生成Property表?

问题原因分析

这是因为EF Core默认采用**TPH(每个层次结构一张表)**的继承映射策略,会将整个继承体系的所有实体类型都存储在同一个表中,而非为每个子类单独创建表。

具体细节:

  • 当实体类存在继承关系时,EF Core默认会把父类Property和所有子类OrgProperty、SystemProperty的数据统一存入父类对应的Property表中。
  • 该表会自动生成一个名为Discriminator的鉴别器列,用来区分不同的实体类型:比如存储OrgProperty数据时,该列值为OrgProperty;存储SystemProperty数据时,值为SystemProperty。
  • 你的代码中没有显式配置其他继承映射策略,因此EF Core自动使用了默认的TPH,所以不会生成OrgProperties和SystemProperties这两个单独的表。

若需为子类单独生成表的配置方法

如果希望为每个实体类型单独创建表(即TPT:每个类型一张表),可以通过Fluent API在DbContext的OnModelCreating方法中显式配置:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Property>().ToTable("Properties");
    modelBuilder.Entity<OrgProperty>().ToTable("OrgProperties");
    modelBuilder.Entity<SystemProperty>().ToTable("SystemProperties");
}

内容的提问来源于stack exchange,提问作者David Thielen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:29:55