共用方式為


實體數據模型:繼承

實體數據模型 (EDM) 支援 實體類型的繼承。 EDM 中的繼承類似於面向物件程式設計語言類別的繼承。 就像以面向物件語言的類別一樣,在概念模型中,您可以定義繼承自另一個實體類型(基底類型)的實體類型(衍生類型)。 不過,不同於面向物件程序設計中的類別,在概念模型中,衍生型別一律會繼承基底型別的所有 屬性導覽屬性 。 在衍生類型中,您無法覆蓋繼承的屬性。

在概念模型中,您可以建置衍生類型繼承自另一個衍生類型的繼承階層。 階層頂端的類型(階層中不是衍生類型的類型)稱為 根類型。 在繼承階層中, 實體索引鍵 必須在根類型上定義。

您無法建立一個衍生類型從多個類型繼承的繼承階層。 例如,在具有 Book 實體類型的概念模型中,您可以定義衍生類型 FictionBookNonFictionBook,每個類型都繼承自 Book。 不過,您無法接著定義繼承自 FictionBook 型別和 NonFictionBook 型別的型別。

範例

下圖顯示具有四種實體類型的概念模型: 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>

另請參閱