Udostępnij za pośrednictwem


Model danych jednostki: dziedziczenie

Model danych jednostki (EDM) obsługuje dziedziczenie typów jednostek. Dziedziczenie w programie EDM jest podobne do dziedziczenia klas w językach programowania zorientowanych na obiekty. Podobnie jak w przypadku klas w językach obiektowych, w modelu koncepcyjnym można zdefiniować typ jednostki ( typ pochodny), który dziedziczy z innego typu jednostki ( typu podstawowego). Jednak w przeciwieństwie do klas w programowaniu obiektowym w modelu koncepcyjnym typ pochodny zawsze dziedziczy wszystkie właściwości i właściwości nawigacji typu podstawowego. Nie można przesłaniać właściwości dziedziczonych w typie pochodnym.

W modelu koncepcyjnym można tworzyć hierarchie dziedziczenia, w których typ pochodny dziedziczy z innego typu pochodnego. Typ w górnej części hierarchii (jeden typ w hierarchii, który nie jest typem pochodnym) jest nazywany typem głównym. W hierarchii dziedziczenia klucz jednostki musi być zdefiniowany w typie głównym.

Nie można tworzyć hierarchii dziedziczenia, w których typ pochodny dziedziczy z więcej niż jednego typu. Na przykład w modelu koncepcyjnym z typem Book jednostki, można zdefiniować typy pochodne FictionBook i NonFictionBook, z których każdy dziedziczy z klasy Book. Nie można jednak wtedy zdefiniować typu, który dziedziczy zarówno z typów: FictionBook i NonFictionBook.

Przykład

Na poniższym diagramie przedstawiono model koncepcyjny z czterema typami jednostek: Book, , FictionBookPublisheri Author. Typ FictionBook jednostki jest typem pochodnym dziedziczącym z Book typu jednostki. Typ FictionBook dziedziczy właściwości ISBN (Key), Title i Revision oraz definiuje dodatkową właściwość o nazwie Genre.

Diagram przedstawiający model koncepcyjny z czterema typami jednostek.

ADO.NET Entity Framework używa języka specyficznego dla domeny (DSL) nazywanego koncepcyjnym językiem definicji schematu (CSDL) do definiowania modeli koncepcyjnych. Poniższy plik CSDL definiuje typ jednostki , FictionBookktóry dziedziczy z Book typu (jak na powyższym diagramie):

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

Zobacz także