實體數據模型 (EDM) 支援 實體類型的繼承。 EDM 中的繼承類似於面向物件程式設計語言類別的繼承。 就像以面向物件語言的類別一樣,在概念模型中,您可以定義繼承自另一個實體類型(基底類型)的實體類型(衍生類型)。 不過,不同於面向物件程序設計中的類別,在概念模型中,衍生型別一律會繼承基底型別的所有 屬性 和 導覽屬性 。 在衍生類型中,您無法覆蓋繼承的屬性。
在概念模型中,您可以建置衍生類型繼承自另一個衍生類型的繼承階層。 階層頂端的類型(階層中不是衍生類型的類型)稱為 根類型。 在繼承階層中, 實體索引鍵 必須在根類型上定義。
您無法建立一個衍生類型從多個類型繼承的繼承階層。 例如,在具有 Book 實體類型的概念模型中,您可以定義衍生類型 FictionBook 和 NonFictionBook,每個類型都繼承自 Book。 不過,您無法接著定義繼承自 FictionBook 型別和 NonFictionBook 型別的型別。
範例
下圖顯示具有四種實體類型的概念模型: Book、 FictionBook、 Publisher和 Author。 實體 FictionBook 類型是衍生類型,繼承自 Book 實體類型。 型別 FictionBook 繼承ISBN (Key)、Title 和 Revision 屬性,並定義了一個稱為 Genre 的額外屬性。
ADO.NET Entity Framework 會使用稱為概念架構定義語言 (CSDL) 的網域特定語言 (DSL) 來定義概念模型。 下列 CSDL 定義一個實體類型 FictionBook,其繼承自 Book 型別(如上圖所示):
<EntityType Name="FictionBook" BaseType="BooksModel.Book" >
<Property Type="String" Name="Genre" Nullable="false" />
</EntityType>