Memakai Entity Framework Dengan Pendekatan Database First


Pada artikel sebelumnya (Memakai Entity Framework Di Visual Studio 2010), saya memakai Entity Framework (EF) dengan pendekatan code first. Prosesnya dimulai dengan membuat domain class yang kemudian secara otomatis menghasilkan tabel di database. Kali ini saya akan mencoba pendekatan database first. Syaratnya: tabel sudah dibuat di database. Entity Framework akan menghasilkan domain class berdasarkan informasi dari tabel. Saya akan memakai database MySQL Server.

Sebelum mulai memakai MySQL di .NET, saya memastikan terlebih dahulu bahwa Connector/.NET sudah ter-install. Untuk men-install Connector/.NET, saya bisa memberikan tanda centang untuk item tersebut pada saat melakukan instalasi MySQL Server seperti yang terlihat pada gambar berikut ini:

Melakukan instalasi Connector/.NET

Melakukan instalasi Connector/.NET

Saya kemudian membuat tabel di database MySQL dengan perintah SQL seperti berikut ini:

CREATE DATABASE latihan;

GRANT ALL ON latihan.* to steven@localhost;

CREATE TABLE latihan.penjualan (
   id BIGINT(20) AUTO_INCREMENT PRIMARY KEY,
   nomor CHAR(5) NOT NULL,
   tanggal DATE NOT NULL,
   konsumen VARCHAR(100) NOT NULL,
   diskon DECIMAL DEFAULT 0
);

CREATE TABLE latihan.itemPenjualan (
   id BIGINT(20) AUTO_INCREMENT PRIMARY KEY,
   namaBarang VARCHAR(200) NOT NULL,
   jumlah INT NOT NULL,
   harga DECIMAL(18,2) NOT NULL,
   penjualanId BIGINT(20) NOT NULL,
   CONSTRAINT `FK_PENJUALAN_ID` FOREIGN KEY (penjualanId) REFERENCES penjualan(id)
);

Berikutnya, saya membuat sebuah proyek Console Application baru di Visual Studio 2010. Saya kemudian memilih menu Project, Manage NuGet Packages… untuk memakai Entity Framework versi terbaru di proyek ini.

Setelah memastikan Entity Framework telah ter-install, saya memilih men-klik kanan nama proyek dan memilih menu Add New Item... Pada dialog yang muncul, saya memilih Data, ADO.NET Entity Data Model seperti yang terlihat pada gambar berikut ini:

Membuat model baru

Membuat model baru

Saya mengisi nama model dengan TransaksiModel dan men-klik tombol Add. Pada dialog yang muncul, saya memilih Generate from database dan men-klik tombol Next seperti yang terlihat pada gambar berikut ini:

Melakukan reverse engineering dari database

Melakukan reverse engineering dari database

Visual Studio akan menampilkan dialog Choose Your Data Connection. Saya kemudian men-klik tombol New Connection…. Akan muncul dialog Connection Properties. Saya kemudian men-klik tombol Change.. pada Data source untuk memilih MySQL Database (MySQL Data Provider). Saya kemudian mengisi informasi database seperti yang terlihat pada gambar berikut ini:

Menambahkan koneksi ke MySQL Server

Menambahkan koneksi ke MySQL Server

Setelah men-klik tombol Test Connection untuk memastikan koneksi database dapat dibuat, saya kemudian men-klik tombol OK. Saya memilih Yes, include the sensitive data in the connection string.. Selain itu, pada bagian Save entity connection settings in App.Config as, saya mengisinya dengan TransaksiContext. Setelah selesai, saya men-klik tombol Next.

Saya memberi tanda centang seluruh tabel yang ada, mengisi nama namespace dan men-klik tombol Finish untuk selesai, seperti yang terlihat pada gambar berikut ini:

Memilih tabel yang akan di-reverse engineer

Memilih tabel yang akan di-reverse engineer

Visual Studio 2010 akan menampilkan diagram seperti yang terlihat pada gambar berikut ini:

Model hasil reverse engineering

Model hasil reverse engineering

Saya melakukan sedikit perubahan nama pada kedua entity tersebut agar diawali dengan huruf kapital. Caranya adalah dengan men-klik entity dan mengubah property Entity Set Name dan Name di window Properties.

Kode program yang dihasilkan (context dan entity class) terletak di sebuah file yang dapat dilihat di:

Kode program yang dihasilkan berdasarkan isi database

Kode program yang dihasilkan berdasarkan isi database

Setelah ini, saya dapat menggunakan operasi Entity Framework seperti pada sebelumnya. Sebagai contoh, kode program berikut ini akan menyimpan sebuah object ke dalam database:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LatihanOOP
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var db = new TransaksiContext())
            {
                Penjualan p1 = new Penjualan()
                {
                    nomor = "FJ001",
                    tanggal = new DateTime(2014, 1, 10),
                    konsumen = "Solid Snake",
                };
                p1.itempenjualan.Add(new ItemPenjualan() { namaBarang = "BRG1", jumlah = 1, harga = 100 });
                p1.itempenjualan.Add(new ItemPenjualan() { namaBarang = "BRG2", jumlah = 5, harga = 20 });

                db.Penjualan.AddObject(p1);
                db.SaveChanges();
            }
        }
    }
}

Setelah program di atas dijalankan, isi tabel di database akan terlihat seperti pada gambar berikut ini:

Sebuah objek yang tersimpan di database

Sebuah objek yang tersimpan di database

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: