Model Data Entitas: Pewarisan

Model Data Entitas (EDM) mendukung pewarisan untuk jenis entitas. Pewarisan dalam EDM mirip dengan pewarisan untuk kelas dalam bahasa pemrograman berorientasi objek. Seperti halnya kelas dalam bahasa berorientasi objek, dalam model konseptual Anda dapat mendefinisikan jenis entitas (jenis turunan) yang diturunkan dari jenis entitas lain (jenis dasar). Namun, tidak seperti kelas dalam pemrograman berorientasi objek, dalam model konseptual jenis turunan selalu mewarisi semua properti dan properti navigasi dari jenis dasar. Anda tidak dapat mengganti properti yang diwarisi dalam jenis turunan.

Dalam model konseptual Anda dapat membangun hierarki pewarisan dengan tipe turunan mewarisi dari tipe turunan lainnya. Jenis di bagian atas hierarki (satu jenis dalam hierarki yang bukan merupakan jenis turunan) disebut jenis akar. Dalam hierarki pewarisan, kunci entitas harus ditentukan pada jenis akar.

Anda tidak dapat membangun hierarki pewarisan dengan tipe turunan mewarisi lebih dari satu tipe. Misalnya, dalam model konseptual dengan tipe entitas Book, Anda dapat menentukan tipe turunan FictionBook dan NonFictionBook yang masing-masing diwarisi dari Book. Namun, Anda tidak dapat menentukan jenis yang diturunkan dari jenis FictionBook dan NonFictionBook.

Contoh

Diagram berikut menunjukkan model konseptual dengan empat jenis entitas: Book, FictionBook, Publisher, dan Author. Jenis entitas FictionBook adalah jenis turunan, mewarisi jenis entitas Book. Jenis FictionBook mewarisi properti ISBN (Key), Title, dan Revision, dan mendefinisikan properti tambahan yang disebut Genre.

Diagram that shows a conceptual model with four entity types.

ADO.NET Entity Framework menggunakan bahasa khusus domain (DSL) yang disebut bahasa definisi skema konseptual (CSDL) untuk mendefinisikan model konseptual. CSDL berikut mendefinisikan tipe entitas, FictionBook, yang mewarisi tipe Book (seperti dalam diagram di atas):

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

Lihat juga