Langsung ke konten utama

Apa Itu Entity Framework?

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:

  1. Membuat objek koneksi ke database.

  2. Membuka koneksi.

  3. Membuat objek perintah (command) dan menjalankan perintah menggunakan DataReader atau DataAdapter.

  4. 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:

  1. Membuat kelas otomatis berdasarkan tabel database.

  2. 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):

  1. Membuat kelas Department dan Employee.

  2. Menulis kode ADO.NET untuk mengambil data dari database.

  3. Membuat objek Department dan Employee 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

  1. Cross-Platform: Bisa dijalankan di Windows, Linux, dan MacOS.

  2. Modeling: Membuat Entity Data Model berdasarkan POCO (Plain Old CLR Object).

  3. Querying: Mendukung LINQ untuk mengambil data.

  4. Change Tracking: Melacak perubahan data pada objek.

  5. Saving: Otomatis menyimpan perubahan data ke database.

  6. Concurrency: Mencegah konflik data menggunakan optimistik concurrency.

  7. Transactions: Mendukung transaksi otomatis dan kustomisasi.

  8. Caching: Memanfaatkan cache untuk mengoptimalkan performa.

  9. Configurations: Mendukung konfigurasi menggunakan Data Annotations atau Fluent API.

Dengan Entity Framework, pengelolaan database jadi lebih mudah, cepat, dan aman.

Komentar

Postingan populer dari blog ini

Membuat Aplikasi Web ASP.NET Core di Visual Studio 2022

Artikel ini membahas langkah-langkah membuat aplikasi ASP.NET Core menggunakan Visual Studio 2022 dan framework .NET 8. 1. Membuka Visual Studio 2022 Buka Visual Studio 2022 dan klik "Create a new project" di layar awal. 2. Memilih Template Proyek Di jendela "Create a new project" , pilih template ASP.NET Core Empty . Template ini memberikan struktur dasar tanpa konfigurasi awal seperti controller, view, atau API. Setelah itu, klik Next . 3. Konfigurasi Proyek Baru Isi informasi proyek seperti berikut: Project Name : Masukkan nama proyek, misalnya FirstCoreWebApplication . Location : Tentukan lokasi folder untuk menyimpan proyek, misalnya D:\Projects . Solution Name : Biasanya sama dengan nama proyek, tetapi bisa diubah jika diperlukan. Centang "Place solution and project in the same directory" jika solusi dan proyek ingin disimpan dalam satu folder. Klik Create untuk melanjutkan. 4. Pengaturan Tambahan Pada jendela "Additional Information...

Remix IDE: Solusi Praktis untuk Menulis dan Deploy Kontrak Pintar

Remix IDE  adalah lingkungan pengembangan terintegrasi berbasis web yang dirancang untuk menulis, mengompilasi, dan menyebarkan smart contract menggunakan bahasa pemrograman  Solidity  di blockchain Ethereum. Alat ini banyak digunakan oleh pengembang blockchain karena kemudahannya dalam menyediakan fitur lengkap untuk pengembangan, pengujian, dan debugging kontrak pintar. Fitur Utama Remix IDE Berbasis Web dan Gratis Tidak perlu diunduh atau diinstal. Anda dapat mengakses Remix langsung melalui browser di  remix.ethereum.org . Karena berbasis web, Remix dapat digunakan di berbagai perangkat selama ada akses internet. Editor Kode Mendukung penulisan kode Solidity dengan penyorotan sintaks, autocompletion, dan validasi kesalahan. Fitur penyorotan kesalahan (error highlighting) memudahkan pengembang untuk menemukan bug pada kode. Compiler Solidity Remix menyediakan compiler bawaan untuk mengonversi kode Solidity menjadi bytecode yang dapat dijalankan di Ethereum Virtual...

Perlu dicatat Built-in Global Variable pada Solidity

Solidity, sebagai bahasa pemrograman untuk membuat smart contract di Ethereum dan blockchain lainnya, menyediakan beberapa variabel global bawaan . Variabel ini memungkinkan akses mudah ke informasi tentang blockchain, transaksi, dan konteks eksekusi. Dengan menggunakan variabel ini, pengembang dapat berinteraksi dengan lingkungan blockchain tanpa perlu menulis banyak kode tambahan. Berikut penjelasan kategori dan variabel global yang umum digunakan: 1. Informasi Blockchain Variabel-variabel ini menyediakan informasi terkait blockchain, seperti blok saat ini dan propertinya. block.number Mengembalikan nomor blok saat ini. Contoh: uint nomorBlokSaatIni = block.number; block.timestamp Waktu pembuatan blok saat ini dalam format detik sejak Unix epoch. Biasanya digunakan untuk mendapatkan waktu saat ini. Contoh: require(block.timestamp >= waktuMulai, "Terlalu awal untuk eksekusi!"); block.difficulty Tingkat kesulitan penambangan pada blok saat ini. Contoh: uin...