Entity Framework Part 8

Posted by Kamarudin • 1 minute read • Comments

Melanjutkan kembali pembahasan tentang Entity Framework.

Misalkan kita mempunyai struktur tabel seperti gambar di bawah ini.

Jika kita buatkan class entity dari ketiga tabel di atas, class diagramnya akan terlihat seperti berikut :

Dari gambar class diagram di atas, kita bisa melihat bahwa class Siswa, Guru dan Pegawai mempunyai beberapa property yang sama yaitu Jalan, Kota, Provinsi dan KodePos.

Untuk alasan desain class entity yang lebih baik sebaiknya kita pisahkan property Jalan, Kota, Provinsi dan KodePos ke dalam class tersendiri, misal dengan nama class Alamat, kemudian masing-masing class entity Siswa, Guru dan Pegawai menambahkan property baru dengan tipe class Alamat, sehingga class diagram kita akan menjadi seperti berikut :

Nah class baru (Alamat) inilah yang akan menjadi pembahasan kita pada postingan kali ini yang dikenal dengan istilah Complex Types atau Value Types.

Sejak awal Entity Framework sudah mendukung Complex Types atau yang dikenal juga dengan istilah value types.

Complex Types atau value types bisa digunakan sebagai tipe data dari sebuah property sehingga ada kemiripan dengan class entity biasa yang sudah kita kenal, yang disebut dengan istilah entity types.

Lalu di mana perbedaannya ?

Di dalam Entity Framework setiap entity types harus mempunyai property key sedangkan complex types tidak.

Contoh :

Mendefinisikan Complex Types

Setelah mengetahui perbedaan antara entity types dan complex types kita juga harus mengetahui aturan dalam membuat complex types.

Berikut aturan-aturan yang harus kita penuhi untuk membuat complex types.

  1. Complex types tidak boleh mempunyai property key.
  2. Semua property yang dimiliki complex types harus bertipe primitif.
  3. Ketika digunakan sebagai tipe data oleh class lain, tidak boleh sebagai collection type harus single instance

Contoh :

Konfigurasi Mapping (pemetaan) Complex Types

Untuk menyederhanakan contoh kode program, konfigurasi mapping (pemetaan) complex types di bawah ini menggunakan konfigurasi Data Annotations. Saya sendiri lebih senang menggunakan konfigurasi Fluent API dengan tujuan agar class entity kita tetap bersih dari atribut-atribut Data Annotations.

Caranya adalah dengan mengedit class Alamat, kemudian menambahkan atribut Data Annotations

Terakhir kita coba untuk mengakses property dengan tipe complex types

Jika kode di atas dijalankan, akan menghasilkan output seperti berikut :

Selamat MENCOBA :blush:

Comments