首先自动生成继承映射mvc DB

时间:2012-09-02 07:09:56

标签: asp.net-mvc entity-framework c#-4.0 entity-framework-4

是否可以使用BD第一种方法定义继承映射和Discriminator属性。

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

如果我有完全控制权,我会以这种方式设计映射:

  1. 定义abstarct类DomainEntity
  2. 从DomainEntity calss继承以创建具体实体
  3. 对TypeID
  4. 使用继承映射批注和IsDiscriminator批注
  5. 使用枚举来定义所有可能的类型(我想知道从那一点开始的类型表是什么)
  6. 是否可以以某种方式在EDMX文件中定义所有这些?或者我是否需要停止使用自动生成并继续手动映射?

1 个答案:

答案 0 :(得分:2)

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

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