Freigeben über


Entitätsdatenmodell: Vererbung

Das Entity Data Model (EDM) unterstützt die Vererbung für Entitätstypen. Die Vererbung im EDM ähnelt der Vererbung für Klassen in objektorientierten Programmiersprachen. Wie bei Klassen in objektorientierten Sprachen können Sie in einem konzeptionellen Modell einen Entitätstyp (einen abgeleiteten Typ) definieren, der von einem anderen Entitätstyp (dem Basistyp) erbt. Im Gegensatz zu Klassen in objektorientierter Programmierung erbt der abgeleitete Typ jedoch immer alle Eigenschaften und Navigationseigenschaften des Basistyps. Sie können geerbte Eigenschaften in einem abgeleiteten Typ nicht außer Kraft setzen.

In einem konzeptionellen Modell können Sie Vererbungshierarchien erstellen, in denen ein abgeleiteter Typ von einem anderen abgeleiteten Typ erbt. Der Typ oben in der Hierarchie (der typ in der Hierarchie, der kein abgeleiteter Typ ist) wird als Stammtyp bezeichnet. In einer Vererbungshierarchie muss der Entitätsschlüssel für den Stammtyp definiert werden.

Sie können keine Vererbungshierarchien erstellen, in denen ein abgeleiteter Typ von mehr als einem Typ erbt. Beispielsweise können Sie in einem konzeptionellen Modell mit einem Book-Entitätstyp abgeleitete Typen FictionBook und NonFictionBook definieren, die jeweils von Book erben. Sie konnten jedoch keinen Typ definieren, der sowohl von FictionBook als auch von NonFictionBook erbt.

Beispiel

Das folgende Diagramm zeigt ein konzeptionelles Modell mit vier Entitätstypen: Book, , FictionBook, Publisherund Author. Der Entitätstyp FictionBook ist ein abgeleiteter Typ, der vom Entitätstyp Book erbt. Der FictionBook Typ erbt die ISBN (Key), Title, und Revision Eigenschaften und definiert eine zusätzliche Eigenschaft namens Genre.

Diagramm, das ein konzeptionelles Modell mit vier Entitätstypen zeigt.

Das ADO.NET Entity Framework verwendet eine domänenspezifische Sprache (DSL), die als konzeptuelle Schemadefinitionssprache (CSDL) bezeichnet wird, um konzeptionelle Modelle zu definieren. Die folgende CSDL definiert einen Entitätstyp, FictionBook, der von dem Typ Book erbt (wie im obigen Diagramm).

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

Siehe auch