Entity Data Model: Vererbung

Das Entity Data Model (EDM) unterstützt Vererbung für Entitätstypen. Vererbung im EDM ist ähnlich wie Vererbung für Klassen in objektorientierten Programmiersprachen. Wie mit 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 jedoch in einem konzeptionellen Modell der abgeleitete Typ immer alle Eigenschaften und Navigationseigenschaften des Basistyps. Geerbte Eigenschaften in einem abgeleiteten Typ können nicht überschrieben werden.

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

Sie können keine Vererbungshierarchien erstellen, in denen ein abgeleiteter Typ von mehr als einem Typ erbt. In einem konzeptionellen Modell mit einem Book-Entitätstyp könnten Sie z. B. die abgeleiteten Typen FictionBook und NonFictionBook definieren, die jeweils von Book erben. Sie könnten dann jedoch keinen Typ definieren, der vom Typ FictionBook und vom Typ NonFictionBook erbt.

Beispiel

Die unten stehende Abbildung zeigt ein konzeptionelles Modell mit vier Entitätstypen: Book, FictionBook, Publisher und Author. Der FictionBook-Entitätstyp ist ein abgeleiteter Typ, der vom Book-Entitätstyp erbt. Der FictionBook-Typ erbt die Eigenschaften ISBN (Key), Title und Revision, und definiert die zusätzliche Eigenschaft Genre.

Vererbung

Das ADO.NET Entity Framework verwendet eine domänenspezifische Sprache (DSL) mit der Bezeichnung konzeptionelle Schemadefinitionssprache (CSDL), um konzeptionelle Modelle zu definieren. Die folgende CSDL definiert den Entitätstyp FictionBook, der vom Book-Typ (wie in der Abbildung oben) erbt:

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

Siehe auch

Konzepte

Schlüsselkonzepte im Entity Data Model
Entity Data Model