实体数据模型:继承

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

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

不能构建这样的继承层次结构,即一个派生类型继承自多个类型。 例如,在包含 Book 实体类型的概念模型中,可以定义都是继承自 FictionBook 的派生类型 NonFictionBookBook。 但是,随后不能定义同时继承自 FictionBookNonFictionBook 类型的类型。

示例

下图显示了一个具有四个实体类型的概念模型:BookFictionBookPublisherAuthorFictionBook 实体类型是一个派生类型,继承自 Book 实体类型。 FictionBook 类型继承了 ISBN (Key)TitleRevision 属性,并定义了一个名为 Genre 的附加属性。

Diagram that shows a conceptual model with four entity types.

ADO.NET 实体框架使用一种称为“概念架构定义语言 (CSDL)”的特定于域的语言 (DSL) 来定义概念模型。 下面的 CSDL 定义了一个实体类型 FictionBook,它继承自 Book 类型(如上图中所示):

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

请参阅