次の方法で共有


エンティティ データ モデル: 継承

エンティティ データ モデル (EDM) では、 エンティティ型の継承がサポートされています。 EDM での継承は、オブジェクト指向プログラミング言語のクラスの継承と似ています。 オブジェクト指向言語のクラスと同様に、概念モデルでは、別のエンティティ型 (基本型) から継承するエンティティ型 (派生) を定義できます。 ただし、オブジェクト指向プログラミングのクラスとは異なり、概念モデルでは、派生型は常に基本型のすべての プロパティナビゲーション プロパティ を継承します。 派生型の継承されたプロパティをオーバーライドすることはできません。

概念モデルでは、派生型が別の派生型から継承される継承階層を構築できます。 階層の先頭にある型 (派生型ではない階層内の 1 つの型) は 、ルート型と呼ばれます。 継承階層では、 エンティティ キー をルート型で定義する必要があります。

派生型が複数の型から継承される継承階層を構築することはできません。 たとえば、Book エンティティ型を持つ概念モデルでは、派生型FictionBook定義し、それぞれがNonFictionBookから継承するBookを定義できます。 ただし、 FictionBook 型と NonFictionBook 型の両方から継承する型を定義することはできませんでした。

次の図は、 BookFictionBookPublisherAuthorの 4 種類のエンティティを持つ概念モデルを示しています。 FictionBook エンティティ型は派生型であり、Book エンティティ型から継承されます。 FictionBook型は、ISBN (Key)Title、およびRevisionプロパティを継承し、Genreと呼ばれる追加のプロパティを定義します。

4 つのエンティティ型を持つ概念モデルを示す図。

ADO.NET Entity Framework では、概念スキーマ定義言語 (CSDL) と呼ばれるドメイン固有言語 (DSL) を使用して概念モデルを定義します。 次の CSDL は、(上の図のように) FictionBook型から継承するエンティティ型 (Book) を定義します。

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

こちらも参照ください