Separating Entities From Context and Logic Layer in Entity Framework (Part-1)

Entity Framework , Posted at : Aug/22/2015  
972 Views   1 Comments

Entity Framework (EF) yang digunakan dalam sebuah project akan menghasilkan entity class (POCO / Plain Old CLR Object) yang merupakan hasil mapping terhadap tabel atau view atau tipe data yang digunakan dalam sebuah stored procedure. Selain itu juga dihasilkan context class yang berfungsi untuk melakukan koneksi ke sumber data, misalnya database RDBMS. Bagaimana caranya agar entity class yang dihasilkan dapat dipisahkan dari context dan logic layer secara terpisah?

Pemisahan komponen-komponen tersebut berguna agar komponen tersebut reusable dan pengelolaannya juga lebih mudah, sehingga nantinya setiap project yang berbeda dapat menggunakan kembali komponen tersebut.

Dalam contoh kali ini saya akan memberikan langkah-langkah demi langkah untuk melakukan pemisahan tersebut. Database yang digunakan yaitu database Northwind yang sudah terinstal di SQL Server, sedangkan tools yang digunakan yaitu Visual Studio 2013. Berikut ini adalah langkah-langkahnya :

1. Buat sebuah Class Library Project template, dan berikan nama project tersebut DAL. DAL tersebut merupakan singkatan dari Data Access Layer. Kemudian hapus Class1.cs yang terdapat di dalam project tersebut.

2. Tambahkan item ADO.NET Entity Data Model kedalam project tersebut dan berikan nama NorthwindModel. Hubungkan ke database Northwind dan tambahkan tabel Customers, Orders, dan Order Details.

Perhatikan entity / POCO class yang dihasilkan seperti yang dapat dilihat pada gambar diatas yang berada pada kotak merah. Class-class tersebut akan dipisahkan ke project yang berbeda.

3. Tambahkan Class Library Project template baru ke dalam solution yang sama dan berikan nama EntityObject. Hapus file Class1.cs.

4. Buka direktori project DAL, dan cari file NorthwindModel.tt, kemudian cut atau pindahkan file tersebut ke direktori project EntityObject.

 

5. Buka project EntityObject dan aktifkan fitur “Show All Files” dari toolbar Solution Explorer. Klik file NorthwindModel.tt. Ubah kode berikut ini di file tersebut.

Klik kanan file tersebut dan pilih menu “Include In Project”, kemudian Build Solution. File .tt merupakan file yang dihasilkan secara otomatis oleh tools T4 Template. Perubahan yang dilakukan di kode tersebut ditujukan untuk mengubah rujukan file .edmx ke project DAL. Perhatikan struktur project EntityObject setelah adanya perubahan tersebut :

Entity class sekarang sudah berpindah ke project yang berbeda dari sumber asalnya.

6. Tambahkan referensi dll dari project DAL ke project EntityObject.

7. Buka file NorthwindModel.Context.tt di project DAL. Lakukan perubahan kode berikut ini untuk menambahkan using ke namespace EntityObject dan kemudian Build Project atau Build Solution.

8. Hapus file NorthwindModel.tt di project DAL dengan klik kanan file tersebut dan pilih menu Delete. Build Solution. Sekarang entity class dengan file edmx sudah terpisah di project yang berbeda.

9. Lakukan penambahan tabel di edmx project DAL dengan menambahkan tabel Products, kemudian Build Solution, anda akan mendapatkan pesan error bahwa class Product tidak ditemukan. Perhatikan di project EntityObject, file Product.cs tersebut tidak dihasilkan secara otomatis, kenapa hal tersebut dapat terjadi? Entity class di hasilkan secara otomatis oleh tools T4 Template yang akan dijalankan secara langsung apabila entity class beserta edmx nya masih berada dalam satu project. Apabila sudah dipisahkan maka kita harus melakukannya secara manual untuk menjalankan tools tersebut.

10. Klik kanan file NorthwindModel.tt di project EntityProject dan pilih menu “Run Custom Tool”. Perhatikan kembali struktur projectnya, sekarang dapat kita lihat bahwa class Product sudah dihasilkan oleh tools tersebut.

Jika entity Product tersebut dihapus dari edmx maka kita harus menjalankan kembali custom tool tersebut secara manual, hasil akhirnya dapat dilihat pada gambar dibawah ini :

Pada posting berikutnya saya akan menjelaskan tahap berikutnya untuk membuat logic layer atau repository dengan membuat project yang terpisah yang mengakses kedua project yang sudah dibuat di posting ini. Berikut ini adalah link artikel Part-2 :

Separating Entities From Context and Logic Layer in Entity Framework (Part-2)


[Comments]
Hafidz Fairiz  Apr/15/2016 04:28:16 :

Wah bisa dipisah yah ternyata, trima kasih pak.. :) 


[Write your comment]
Name (required)
Email (required-will not published)
 
Comment

POJS
Input code above below (Case Sensitive) :
About Me 
Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Microsoft Certified Trainer | IT Trainer at Native Enterprise | IT Consultant | Software Developer | MCAD | MCPD | MOS | Bandung, West Java, Indonesia.
[Read More...]
Top Download 
Mapping Hak Akses User Pada MenuStrip Sampai Control Button : Downloaded 6083 times  
Bagaimana caranya menginstal database ketika deploying sebuah aplikasi? : Downloaded 4689 times  
Simple Voice Engine Application With Sound Player Class... : Downloaded 3554 times  
Change Group,Sort Order, Filtering By Date in Crystal Reports : Downloaded 3324 times  
WinForms DataGrid Paging With SqlDataAdapter : Downloaded 2706 times  
Links 
Certifications 
MOS 2007
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench
Native Enterprise 
Follow Me 
Facebook   LinkedIn   Twitter
Syndication 
Hosted By 
Native Enterprise News 
© Copyright 2006-2016   Rully Yulian MF   All rights reserved.