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ů FictionBook
NonFictionBook
.
Příklad
Následující diagram znázorňuje koncepční model se čtyřmi typy entit: Book
, FictionBook
, Publisher
a Author
. Typ FictionBook
entity je odvozený typ, který dědí z Book
typu entity. Typ FictionBook
dědí ISBN (Key)
vlastnost , Title
a Revision
vlastnosti a definuje další vlastnost s názvem Genre
.
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, FictionBook
který dědí z Book
typu (jako v diagramu výše):
<EntityType Name="FictionBook" BaseType="BooksModel.Book" >
<Property Type="String" Name="Genre" Nullable="false" />
</EntityType>