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

Posted at : Aug/22/2015
1703 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
azby
Input code above below (Case Sensitive) :

ABOUT ME

Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Founder & IT Trainer Native Enterprise | MCT (2008-2019) | MVP (2009-2016) | Xamarin Certified Professional | MTA | MCAD | MCPD | MOS | Bandung, West Java, Indonesia.

[Read More...]

TOP DOWNLOAD

Mapping Hak Akses User Pada MenuStrip Sampai Control Button
downloaded 6982 times

Bagaimana caranya menginstal database ketika deploying sebuah aplikasi?
downloaded 4893 times

Simple Voice Engine Application With Sound Player Class...
downloaded 4045 times

Change Group,Sort Order, Filtering By Date in Crystal Reports
downloaded 3460 times

WinForms DataGrid Paging With SqlDataAdapter
downloaded 2881 times


LINKS

CERTIFICATIONS

Xamarin Certified
MOS 2007
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench

NATIVE ENTERPRISE

Native Enterprise - IT Training

FOLLOW ME

Youtube  Facebook  Instagram  LinkedIn   Twitter

RSS


NATIVE ENTERPRISE NEWS

© Copyright 2006 - 2024   Rully Yulian MF   All rights reserved.