Model EDM (Entity Data Model): Dědičnost

Model Entity Data Model (EDM) podporuje dědičnost typů entit. Dědičnost v EDM se podobá dědičnosti tříd v objektově orientovaných programovacích jazycích. Stejně jako u tříd v objektově orientovaných jazycích můžete v konceptuálním modelu definovat typ entity (odvozený typ), který dědí z jiného typu entity ( základní typ). Na rozdíl od tříd v objektově orientovaném programování však v konceptuálním modelu odvozený typ vždy dědí všechny vlastnosti a navigační vlastnosti základního typu. Zděděné vlastnosti odvozeného typu nelze přepsat.

V konceptuálním modelu můžete vytvořit hierarchie dědičnosti, ve kterých odvozený typ dědí z jiného odvozeného typu. Typ v horní části hierarchie (jeden typ v hierarchii, který není odvozeným typem) se nazývá kořenový typ. V hierarchii dědičnosti musí být klíč entity definován v kořenovém typu.

Hierarchie dědičnosti, ve kterých odvozený typ dědí z více než jednoho typu, nelze vytvořit. Například v konceptuálním modelu s typem Book entity můžete definovat odvozené typy FictionBook a NonFictionBook každý dědit z Book. Nelze však definovat typ, který dědí z obou typů FictionBookNonFictionBook .

Příklad

Následující diagram znázorňuje koncepční model se čtyřmi typy entit: Book, FictionBook, Publishera Author. Typ FictionBook entity je odvozený typ, který dědí z Book typu entity. Typ FictionBook dědí ISBN (Key)vlastnost , Titlea Revision vlastnosti a definuje další vlastnost s názvem Genre.

Diagram that shows a conceptual model with four entity types.

ADO.NET Entity Framework používá jazyk specifický pro doménu (DSL) označovaný jako jazyk CSDL (Conceptual Schema Definition Language) k definování konceptuálních modelů. Následující CSDL definuje typ entity, FictionBookkterý dědí z Book typu (jako v diagramu výše):

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

Viz také