Entity Framework Part 6
Pada postingan sebelumnya kita sudah membahas bagaimana Entity Framework menangani sebuah tabel tunggal. Pada kenyataannya hampir semua aplikasi database menggunakan lebih dari satu tabel dan tentunya diantara tabel ini juga mempunyai hubungan (relasi).
Di postingan kali ini kita akan membahas bagaimana Entity Framework menangani dua buah tabel yang saling berhubungan yaitu Beli dan ItemBeli.
Untuk tabel Supplier dan Barang kita abaikan dulu walaupun kedua tabel ini juga terhubung ke tabel Beli dan ItemBeli.
Proses pembelian di dalam sebuah aplikasinya biasa masuk ke dalam modul transaksi. Ada sebuah proses yang penting ketika akan menyimpan data berupa transaksi, apalagi jika data tersebut saling berhubungan.
Proses ini dikenal dengan istilah transaction, dan salah satu poin pentingnya adalah atomic, yaitu beberapa perintah dianggap sebagai satu kesatuan. Kalau satu gagal, yang lain harus dibatalkan. Contoh pada saat transaksi pembelian proses yang terjadi adalah :
- Insert 1 kali ke tabel Beli
- Insert n kali ke tabel ItemBeli
- Menambah stok barang (tidak di bahas di postingan ini), karena bisa juga diselesaikan dengan database trigger
Ketika insert ke tabel ItemBeli gagal, maka tabel Belinya juga harus di batalkan (undo), klo enggak ya datanya jadi enggak konsisten dong, ada nota Beli yang enggak ada item belinya.
Nah kabar gembiranya Entity Framework secara default sudah mendukung transaction.
Untuk membuat class entity Barang dan ItemBeli berikut class mappingnya sudah tidak dibahas lagi disini, karena saya menggunakan Entity Framework Power Tools.
Sebelum kita lanjut ke pembahasan kode program, kita lihat dulu class entity diagram ke empat tabel di atas.
Independent association dan Foreign key association
Hubungan dua buah entity atau lebih dikenal dengan istilah asosiasi (association). Asosiasi ini mencakup one-to-one, one-to-many dan many-to-many.
Dari sisi pemrograman Entity Framework, diperkenalkan lagi dua jenis asosiasi. Yang pertama dikenal dengan istilah independent association, asosiasi ini sudah diperkenalkan sejak Entity Framework versi awal, dan untuk memudahkan kita sebagai pengembang aplikasi, mulai Entity Framework versi 4, tim Entity Framework menambahkan asosiasi kedua yaitu foreign key association.
Dari kedua asosiasi di atas, implementasi foreign key association lebih disarankan dibandingkan independent association, sehingga untuk kode Entity Framework di bawah ini kita juga menggunakan foreign key association .
Untuk informasi lebih lanjut mengenai Independent association dan Foreign key association bisa merujuk ke referensi berikut :
- Entity Framework 4 in Action
- Programming Entity Framework, 2nd Edition
- Foreign key vs. Independent associations in EF 4
Seperti postingan sebelumnya, saya akan menuliskan 2 versi kode sebagai bahan perbandingan yaitu menggunakan ADO.NET secara langsung dan Entity Framework.
Nama method yang akan kita gunakan untuk menambahkan data beli berikut itemnya adalah AddPembelian. Method ini akan menambahkan data di dua tabel sekaligus (Beli dan ItemBeli), sehingga sangat disarankan menggunakan database transaction.
Untuk ADO.NET fitur transaction harus ditambahkan secara manual, sedangkan Entity Framework secara default sudah menerapkan fitur transaction.
ADO.NET
Entity Framework
Menggunakan Entity Framework ternyata sangat mudah, coba lihat kode berikut setara dengan kode ADO.NET di atas :)
Contoh penggunaan :
Tabel Beli terhubung dengan tabel Supplier, sehingga Supplier dengan ID 3 harus sudah ada di tabel Supplier. Begitu juga dengan table ItemBeli yang terhubung dengan tabel Barang, sehingga Barang dengan ID BB-7421, BB-8107 dan BK-M18B-44 juga harus ada di tabel Barang.
Selamat MENCOBA
Comments