實體資料模型:繼承
實體資料模型 (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>