Entitásadat modell: Öröklés

Az entitásadat-modell (EDM) támogatja az entitástípusok öröklését. Az EDM öröklése hasonló az objektumorientált programozási nyelvek osztályainak örökléséhez. Az objektumorientált nyelvek osztályaihoz hasonlóan egy elméleti modellben is definiálhat egy entitástípust ( származtatott típust), amely egy másik entitástípustól (az alaptípustól) öröklődik. Az objektumorientált programozás osztályaitól eltérően azonban egy elméleti modellben a származtatott típus mindig örökli az alaptípus összes tulajdonságát és navigációs tulajdonságát . Származtatott típusban nem bírálhatja felül az örökölt tulajdonságokat.

Egy elméleti modellben olyan öröklési hierarchiákat hozhat létre, amelyekben egy származtatott típus egy másik származtatott típustól öröklődik. A hierarchia tetején lévő típust (a hierarchia egy olyan típusát, amely nem származtatott típus) gyökértípusnak nevezzük. Öröklési hierarchiában az entitáskulcsot a gyökértípuson kell meghatározni.

Nem hozhat létre olyan öröklési hierarchiákat, amelyekben egy származtatott típus egynél több típustól örököl. Például egy entitástípussal rendelkező Book fogalmi modellben definiálhat származtatott típusokat FictionBook , és NonFictionBook amelyektől Bookmindegyik öröklődik. Azonban nem definiálhat olyan típust, amely örököl mind a FictionBook és NonFictionBook típusokból.

példa

Az alábbi ábrán egy négy entitástípussal rendelkező fogalmi modell látható: Book, FictionBook, Publisherés Author. Az FictionBook entitástípus egy származtatott típus, amely az Book entitástípustól öröklődik. A FictionBook típus örökli a ISBN (Key), Titleés Revision a tulajdonságokat, és definiál egy további, úgynevezett tulajdonságot Genre.

Négy entitástípusú fogalmi modellt ábrázoló diagram.

A ADO.NET Entity Framework egy tartományspecifikus nyelvet (DSL) használ, amelyet fogalmi sémadefiníciós nyelvnek (CSDL) nevezünk a fogalmi modellek definiálásához. A következő CSDL egy olyan entitástípust határoz meg, FictionBookamely a Book típustól öröklődik (a fenti ábrához hasonlóan):

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

Lásd még