Share via


實體資料模型:繼承

實體資料模型 (EDM) 支援實體類型的繼承。 EDM 中的繼承類似於物件導向程式設計語言中的類別繼承。 如同物件導向語言的類別,在概念模型,您可定義繼承自另一實體類型 (基底類型) 的實體類型 (衍生型別)。 不過,不同於物件導向程式設計的類別,在概念模型,衍生型別一律繼承基底類型的所有屬性導覽屬性。 您不能覆寫衍生型別中的繼承屬性。

在概念模型中,您可以組建繼承階層,其中的衍生型別繼承自另一種衍生型別。 階層上層的型別 (階層中非衍生型別的型別) 稱為「根型別」。 在繼承階層中,必須在根型別定義實體索引鍵

您不可建置衍生型別繼承自多個型別的繼承階層。 例如,在具有 Book 實體類型的概念模型中,您可以定義分別繼承自 FictionBook 的衍生型別 NonFictionBookBook。 不過,您可能無法定義同時繼承自 FictionBookNonFictionBook 型別的型別。

範例

下圖顯示包含四種實體類型 (BookFictionBookPublisherAuthor) 的概念模型。 FictionBook 實體類型為衍生型別,繼承自 Book 實體類型。 FictionBook 型別繼承自 ISBN (Key)TitleRevision 屬性,並且定義稱為 Genre 的額外屬性。

Diagram that shows a conceptual model with four entity types.

ADO.NET Entity Framework 會使用稱為概念結構定義語言 (CSDL) 的特定領域語言 (DSL) 來定義概念模型。 下列 CSDL 定義實體類型 FictionBook,此實體類型繼承自 Book 型別 (如上圖所示):

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

另請參閱