两个型号共用一张桌子

本文关键字:一张 两个 | 更新日期: 2023-09-27 18:28:13

我有一个场景,其中我有两个或多个模型将使用同一个表。比方说RecordCareerWorkshopRecordRecruitment。我这样做是因为他们可能有不同的验证要求、显示名称、验证错误消息等。

我创建了两个模型,并在类的顶部放了一个[Table("record")]。

例如:

[Table("records")]
public class RecordCareerWorkshop

[Table("records")]
public class RecordRecruitment

然而,当我运行网页时,我会收到如下错误消息:

实体类型"RecordCareerWorkshop"answers"RecordRecruitment"不能共享表"Record",因为它们不在同一类型层次结构中或与没有有效的一对一外键关系在它们之间匹配主键。

我可以知道如何使用同一张桌子上的两个型号吗?

编辑:

如果我从表记录的同一基类派生出两个模型,例如:

public class Record

public class RecordCareerWorkShop : Record

public class RecordRecruitment : Record

我会收到错误消息:

"字段列表"中的未知列"Extent1.Discriminator"

每当我执行任何代码时,例如:

var records = db.RecordRecruitment.Where(x => x.company_id == id).ToList();

真的不知道Extent1,鉴别器在哪里弹出。

两个型号共用一张桌子

您可以选择以下两条路线之一:

  • 从同一基类派生两个模型
  • 只包含一个实体,然后创建两个将从主实体馈送的ViewModel

如果两个实体都有关联,您可能应该选择选项1。如果它们只是同一基本概念的不同表示,那么您应该选择选项2。