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

EF Code First TPH继承模式下如何将父表同列映射到不同子类字段

解决方法

这是TPH(表每层次结构)继承模式下的字段映射冲突问题,通过显式指定列名即可解决,可选两种配置方式:

  • 方法1:使用数据注解
    在SaleA和PropertyB两个类的CNumber属性上都添加Column特性,指定映射到同一个数据库列:
// SaleA类中
[Column("CNumber")]
public string CNumber { get; set; }

// PropertyB类中
[Column("CNumber")]
public string CNumber { get; set; }

注意:两个类的CNumber属性必须是相同数据类型,否则会出现映射错误。

  • 方法2:使用Fluent API配置
    在DbContext的OnModelCreating方法中统一配置映射规则:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<SaleA>()
        .Property(s => s.CNumber)
        .HasColumnName("CNumber");
        
    modelBuilder.Entity<PropertyB>()
        .Property(p => p.CNumber)
        .HasColumnName("CNumber");
}

配置完成后删除之前生成的错误迁移文件,重新运行Add-Migration生成新迁移,此时不会再新增PropertyB_CNumber列,两个类的CNumber值会统一存储到已有的CNumber列中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:27:03