0

是否可以使用 BD 优先方法定义继承映射和鉴别器属性。

我使用 EDMX 图来定义表到对象的映射。我有一个 DomainEntity 表,其中包含我所有的域实体,它们由映射到 DomainEntityTypes 表的 TypeID 进行描述。

如果我有完全的控制权,我会这样设计映射:

  1. 定义一个抽象类 DomainEntity
  2. 继承 DomainEntity 类以创建具体实体
  3. 在 TypeID 上使用继承映射注解和 IsDiscriminator 注解
  4. 使用枚举来定义所有可能的类型(我想知道从那时起类型表的用途)

所有这些都可以以某种方式在 EDMX 文件中定义吗?还是我需要停止使用自动生成并继续手动映射?

4

1 回答 1

2

没有继承映射的“自动生成”。当您首先使用数据库时,您只需将表加载到模型中,它将创建具有关系的实体。现在,如果您想要继承,则必须从设计器中修改映射。是一个很好的描述如何在设计器中设置 TPH 继承。

  1. 您可以将继承层次结构的基本实体定义为抽象的。它是图中实体的属性。
  2. 您必须为要使用的所有类型继承一个新实体,并在映射中正确设置其鉴别器值。
  3. 没有真正的注释 - 继承是工具箱中可用的构造,鉴别器是映射中定义的条件。
  4. 你将没有枚举。鉴别器列甚至在您的实体中不可用,因为它已经用于定义正确类型的映射(存在限制,每个列在映射中只能使用一次,因此您可以将其用于属性或鉴别器,但不能用于两个都)。您将拥有一组有限的实体来描述您的继承层次结构,而不是枚举。
于 2012-09-02T08:36:50.293 回答