Entitetsdatamodell: Arv
Entitetsdatamodellen (EDM) stöder arv för entitetstyper. Arv i EDM liknar arv för klasser i objektorienterade programmeringsspråk. Precis som med klasser i objektorienterade språk kan du i en konceptmodell definiera en entitetstyp (en härledd typ) som ärver från en annan entitetstyp ( bastypen). Men till skillnad från klasser i objektorienterad programmering ärver den härledda typen i en konceptmodell alltid alla egenskaper och navigeringsegenskaper för bastypen. Du kan inte åsidosätta ärvda egenskaper i en härledd typ.
I en konceptmodell kan du skapa arvshierarkier där en härledd typ ärver från en annan härledd typ. Typen längst upp i hierarkin (den enda typen i hierarkin som inte är en härledd typ) kallas rottypen. I en arvshierarki måste entitetsnyckeln definieras för rottypen.
Du kan inte skapa arvshierarkier där en härledd typ ärver från mer än en typ. I en konceptmodell med en entitetstyp Book
kan du till exempel definiera härledda typer FictionBook
och som var och NonFictionBook
en ärver från Book
. Du kunde dock inte definiera en typ som ärver från både typerna FictionBook
och NonFictionBook
.
Exempel
Följande diagram visar en konceptmodell med fyra entitetstyper: Book
, FictionBook
, Publisher
och Author
. Entitetstypen FictionBook
är en härledd typ som ärver från entitetstypen Book
. Typen FictionBook
ärver ISBN (Key)
egenskaperna , Title
och Revision
och definierar en ytterligare egenskap med namnet Genre
.
ADO.NET Entity Framework använder ett domänspecifikt språk (DSL) som kallas CSDL (Conceptual Schema Definition Language) för att definiera konceptuella modeller. Följande CSDL definierar en entitetstyp, FictionBook
, som ärver från Book
typen (som i diagrammet ovan):
<EntityType Name="FictionBook" BaseType="BooksModel.Book" >
<Property Type="String" Name="Genre" Nullable="false" />
</EntityType>