【问题标题】:Mapping TPT inheritance in Entity Framework 6 (core)在 Entity Framework 6 中映射 TPT 继承(核心)
【发布时间】:2023-01-13 20:23:36
【问题描述】:

考虑两个表,具有 PK ID 的表 BaseService 和具有 PK BaseServiceID 的表 SubService,它是 BaseService 表中 ID 的外键。我希望将这些映射到 EF6 中的类,其中 SubService 继承自 BaseService。我不确定如何在映射中描述外键是从 SubService.BaseServiceID 到 BaseService.ID。目前我有这样的事情:

    modelBuilder.Entity<SubService>(e => {
        e.ToTable("SubService");
    });

    modelBuilder.Entity<BaseService>(e => {
        e.ToTable("BaseService");
    e.HasKey(x =>  x.ID);
});

但是,当我查询时,生成的查询尝试使用 BaseService.ID 加入 SubService.ID。我已经尝试了一些映射变体,但我一无所获 - 任何人都可以建议应该如何完成吗?

【问题讨论】:

    标签: entity-framework-core


    【解决方案1】:
    modelBuilder.Entity<SubService>()
            .ToTable("SubService")
            .HasRequired(s => s.BaseService)
            .WithMany(b => b.SubServices)
            .HasForeignKey(s => s.BaseServiceID);
    

    在此示例中,HasRequired 方法用于指定实体需要一个,该方法用于指定在关系端导航的能力。最后,'BaseService'属性类'SubService''BaseService''WithMany''BaseService''HasForeign''KeyBase''ServiceID''SubService'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多