实体数据模型:继承

实体数据模型(EDM)支持 实体类型的继承。 EDM 中的继承类似于面向对象的编程语言中的类的继承。 与面向对象的语言中的类一样,在概念模型中,可以定义从另一个实体类型(类型)继承的实体类型(派生类型)。 但是,与面向对象的编程中的类不同,在概念模型中,派生类型始终继承基类型的所有 属性导航属性 。 不能重写派生类型中的继承属性。

在概念模型中,可以生成继承层次结构,其中派生类型继承自另一个派生类型。 层次结构顶部的类型(不是派生类型的层次结构中的一种类型)称为 根类型。 在继承层次结构中,必须在根类型上定义 实体键

无法生成派生类型从多个类型继承的继承层次结构。 例如,在具有 Book 实体类型的概念模型中,可以定义派生类型 FictionBook ,并且 NonFictionBook 每个类型都继承自 Book。 但是,你无法定义一个同时继承自FictionBookNonFictionBook类型的类型。

示例:

下图显示了一个概念模型,其中包含四种实体类型: BookFictionBookPublisherAuthor。 实体 FictionBook 类型是派生类型,继承自 Book 实体类型。 该FictionBook类型继承ISBN (Key)TitleRevision属性,并定义一个名为Genre的额外属性。

显示概念模型的图,其中包含四种实体类型。

ADO.NET Entity Framework 使用称为概念架构定义语言(CSDL)的特定于域的语言(DSL)来定义概念模型。 以下 CSDL 定义一个实体类型FictionBook,该类型继承自Book类型(如上图所示):

<EntityType Name="FictionBook" BaseType="BooksModel.Book" >
  <Property Type="String" Name="Genre" Nullable="false" />
</EntityType>

另请参阅