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 zastąpić właściwości dziedziczone 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 FictionBook pochodne, a NonFictionBook każdy z nich dziedziczy z Bookklasy . Nie można jednak zdefiniować typu dziedziczonego zarówno z typów , jak 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 ISBN (Key)właściwości , Titlei Revision i definiuje dodatkową właściwość o nazwie Genre.

Diagram that shows a conceptual model with four entity types.

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 też