Entity Data Model: 継承
Entity Data Model (EDM) は、エンティティ型の継承をサポートしています。 EDM の継承は、オブジェクト指向プログラミング言語におけるクラスの継承に似ています。 オブジェクト指向言語のクラスと同様、概念モデルでは、別のエンティティ型 (基本型) を継承するエンティティ型 (派生型) を定義できます。 ただし、オブジェクト指向プログラミングのクラスとは異なり、概念モデルでは、派生型が基本型のすべてのプロパティとナビゲーション プロパティを常に継承します。 派生型の継承プロパティは、オーバーライドできません。
概念モデルでは、派生型が別の派生型を継承する継承階層を構築することができます。 階層の最上位にある型 (階層内で派生型ではない唯一の型) は、ルート型と呼ばれます。 継承階層では、ルート型にエンティティ キーを定義する必要があります。
複数の型から派生型を継承する継承階層を構築することはできません。 たとえば、Book エンティティ型の概念モデルでは、それぞれ Book から継承する派生型、FictionBook および NonFictionBook を定義することができます。 しかし、FictionBook 型と NonFictionBook 型の両方から継承する型を定義することはできません。
例
下のダイアグラムは、Book、FictionBook、Publisher、および Author という 4 つのエンティティ型の概念モデルを示しています。 FictionBook エンティティ型は、Book エンティティ型から継承する派生型です。 FictionBook 型は、ISBN (Key) プロパティ、Title プロパティ、および Revision プロパティを継承し、Genre と呼ばれる追加プロパティを定義します。
ADO.NET Entity Framework では、概念スキーマ定義言語 (CSDL) と呼ばれるドメイン固有言語 (DSL) を使用して概念モデルを定義します。 次の CSDL は、上のダイアグラムに示された Book 型を継承する FictionBook エンティティ型を定義しています。
<EntityType Name="FictionBook" BaseType="BooksModel.Book" >
<Property Type="String" Name="Genre" Nullable="false" />
</EntityType>