Entity Framework (EF) adalah framework open-source untuk Object-Relational Mapping (ORM) yang digunakan dalam aplikasi .NET. Dengan EF, developer bisa bekerja dengan data relational menggunakan objek domain tanpa perlu memikirkan detail tabel atau kolom database di belakang layar. Singkatnya, EF mengurangi kebutuhan untuk menulis kode akses data manual.
Definisi Resmi
Entity Framework adalah ORM (Object-Relational Mapper) yang memungkinkan developer .NET bekerja dengan database menggunakan objek .NET. Framework ini mengeliminasi kebutuhan untuk menulis sebagian besar kode akses data manual.
Latar Belakang Sebelum Entity Framework
Sebelum .NET 3.5, para developer sering menggunakan ADO.NET untuk melakukan operasi CRUD (Create, Read, Update, Delete) dengan database. Proses ini mencakup:
Membuat objek koneksi ke database.
Membuka koneksi.
Membuat objek perintah (command) dan menjalankan perintah menggunakan DataReader atau DataAdapter.
Menyimpan data ke dalam DataSet atau DataTable untuk manipulasi lebih lanjut.
Proses ini memakan waktu dan rentan terhadap kesalahan. Entity Framework hadir untuk menyederhanakan proses tersebut dengan mengotomatisasi aktivitas-aktivitas yang berhubungan dengan database.
Apa Itu Object-Relational Mapping (ORM)?
ORM adalah pendekatan untuk menghubungkan sistem berbasis objek dengan database relational. Dengan ORM, framework dapat:
Membuat kelas otomatis berdasarkan tabel database.
Membuat tabel database berdasarkan kelas yang ada.
Entity Framework bekerja di antara lapisan data dan database, seperti terlihat dalam diagram berikut:
[Diagram Entity Framework dan Lapisan Aplikasi]
EF menyimpan data ke dalam database dari properti-properti entity bisnis (kelas domain) dan secara otomatis mengubah data dari database menjadi objek entity bisnis.
Apa yang Bisa Dilakukan Entity Framework?
Contoh: Misalnya, kita punya dua tabel, yaitu Departments dan Employees. Kita ingin menampilkan data dari kedua tabel tersebut di aplikasi console.
Cara Konvensional (Tanpa EF):
Membuat kelas
Department
danEmployee
.Menulis kode ADO.NET untuk mengambil data dari database.
Membuat objek
Department
danEmployee
lalu mengisi data yang diambil.
Cara dengan EF:
Dengan EF, kita cukup memberikan skema database, dan framework ini akan otomatis:
Membuat kelas yang mewakili tabel database.
Mengambil data dari database.
Mengisi data ke objek-objek yang sesuai.
Membuat Database untuk EF
Gunakan script berikut untuk membuat database EF_Demo_DB, tabel Departments dan Employees, serta mengisi data sampel:
CREATE DATABASE EF_Demo_DB;
GO
USE EF_Demo_DB;
GO
CREATE TABLE Departments
(
ID INT PRIMARY KEY IDENTITY(1,1),
Name VARCHAR(50),
Location VARCHAR(50)
);
GO
CREATE TABLE Employees
(
ID INT PRIMARY KEY IDENTITY(1,1),
Name VARCHAR(50),
Email VARCHAR(50),
Gender VARCHAR(50),
Salary INT,
DepartmentId INT FOREIGN KEY REFERENCES Departments(ID)
);
GO
INSERT INTO Departments VALUES ('IT', 'Mumbai');
INSERT INTO Departments VALUES ('HR', 'Delhi');
INSERT INTO Departments VALUES ('Sales', 'Hyderabad');
INSERT INTO Employees VALUES ('Mark', '[email protected]', 'Male', 60000, 1);
INSERT INTO Employees VALUES ('Steve', '[email protected]', 'Male', 45000, 3);
INSERT INTO Employees VALUES ('Pam', '[email protected]', 'Female', 60000, 1);
INSERT INTO Employees VALUES ('Sara', '[email protected]', 'Female', 345000, 3);
INSERT INTO Employees VALUES ('Ben', '[email protected]', 'Male', 70000, 1);
INSERT INTO Employees VALUES ('Philip', '[email protected]', 'Male', 45000, 2);
INSERT INTO Employees VALUES ('Mary', '[email protected]', 'Female', 30000, 2);
INSERT INTO Employees VALUES ('Valarie', '[email protected]', 'Female', 35000, 3);
INSERT INTO Employees VALUES ('John', '[email protected]', 'Male', 80000, 1);
GO
Menggunakan Entity Framework
1. Menambahkan ADO.NET Entity Data Model
Klik kanan pada proyek di Solution Explorer.
Pilih Add -> New Item -> Data -> ADO.NET Entity Data Model.
Ubah nama menjadi EmployeeDataModel.
Pilih opsi EF Designer from database.
2. Menyambungkan ke Database
Pada wizard, pilih New Connection.
Masukkan detail database:
Data Source: Microsoft SQL Server.
Authentication: Pilih sesuai kebutuhan.
Database: Pilih EF_Demo_DB.
Klik Test Connection lalu OK.
3. Memilih Objek Database
Pilih tabel Departments dan Employees.
Ubah namespace model menjadi EmployeeModel.
Klik Finish.
4. Menggunakan EF untuk Menampilkan Data
Berikut kode untuk menampilkan data menggunakan Entity Framework:
using System;
using System.Linq;
using System.Collections.Generic;
namespace EFDemo
{
class Program
{
static void Main(string[] args)
{
using (EF_Demo_DBEntities db = new EF_Demo_DBEntities())
{
var departments = db.Departments.ToList();
foreach (var dept in departments)
{
Console.WriteLine($"Department: {dept.Name}, Location: {dept.Location}");
foreach (var emp in dept.Employees)
{
Console.WriteLine($"\tEmployee: {emp.Name}, Email: {emp.Email}, Gender: {emp.Gender}, Salary: {emp.Salary}");
}
}
}
}
}
}
Fitur Entity Framework
Cross-Platform: Bisa dijalankan di Windows, Linux, dan MacOS.
Modeling: Membuat Entity Data Model berdasarkan POCO (Plain Old CLR Object).
Querying: Mendukung LINQ untuk mengambil data.
Change Tracking: Melacak perubahan data pada objek.
Saving: Otomatis menyimpan perubahan data ke database.
Concurrency: Mencegah konflik data menggunakan optimistik concurrency.
Transactions: Mendukung transaksi otomatis dan kustomisasi.
Caching: Memanfaatkan cache untuk mengoptimalkan performa.
Configurations: Mendukung konfigurasi menggunakan Data Annotations atau Fluent API.
Dengan Entity Framework, pengelolaan database jadi lebih mudah, cepat, dan aman.
Komentar
Posting Komentar