Belajar LINQ dan Entity Framework(EF) di C#


Kali ini kita akan belajar bagaimana menggunakan LINQ untuk query data. Sebelum kita mulai, mari kita berkenalan dahulu dengan apa itu Entity Framework(EF) dan LINQ.


LINQ kepanjangan dari Language Integrated Query adalah keyword baru pada C# dan VB, ia terdapat pada .NET versi 3.5 ke atas. LINQ berupa query expression untuk memanipulasi data, anda dapat melakukan query ke berbagai macam data seperti ke database SQL Server (LINQ to SQL), ke object DataSet (LINQ to DataSet), ke entity (LINQ to Entity Framework), data XML (LINQ to XML) dan masih banyak lagi.
 
Entity Framework(EF) adalah ORM buatan Microsoft ia diluncurkan bersamaan dengan Microsoft Visual Studio 2010 dan .Net Framework versi 4.0. ORM itu sendiri adalah Object Relational Mapping, yaitu suatu alat yang digunakan untuk mapping objek-objek dalam database seperti tabel dan view menjadi class entity.
EF membantu mempercepat programmer dalam membangun sebuah aplikasi, karena ia akan membuatkan mapping objek-objek dalam database dan operasi dasar CRUD seperti insert, select, update dan delete secara otomatis.
Cukup sudah berkenalanya, sekarang kita langsung ke praktisnya bagaimana menggunakan kedua fitur tersebut. pada latihan ini saya menggunakan Visual Studio 2010 dan SQL server 2008 untuk databasenya. Pertama buka SQL Server anda buat database dengan nama Latihan1, selanjutnya buat table dengan nama Cars dengan struktur field sebagai berikut :


Struktur Table Cars
Buat field code sebagai primary key dengan identity specification adalah autoincrement.
Sekarang buka Visual Studio 2010 anda buat New Project pilih Windows Form Aplication, beri nama projek anda dengan nama Latihan1
 

 

Membuat Projek baru pada Visual Studio 2010
Pada Solusion Projek anda klik kanan Add Item, selanjutnya pilih ADO.Net Entity Data Model tekan tombol Add maka akan tampil jendela Entity Data Model Wizard, di jendela ini pilih Generate From Database kemudian klik tombol Next anda akan di pandu untuk membuat Connection String database untuk Model anda.

 
Jendela Connection String

Setelah membuat Connection String klik tombol Next kemudian centang table Cars dan klik tombol Finish. Build Projek anda dan saat ini anda sudah berhasil membuat class entity menggunakan EF.
 
Setelah Model selesai di buat saatnya untuk coding, buka Form1 di projek anda, beri nama header form-nya Latihan LINQ dan EF. Tambahkan komponen DataGridView ke Form dan empat Button ganti Properties Text-nya dengan nama masing-masing Refresh, Add, Update, Delete. 

Gambar Form1
 

Selanjutnya buat Form untuk entry data-nya dengan klik kanan Solusion Projek anda tambahkan Window Form. Ubah properties Text menjadi Entry Cars. Tambahkan empat komponen Label dan Textbox ke dalam Form serta satu Button. Ubah properties Text label-nya masing-masing Code, Merk, Type dan Made In. Ubah juga Properties name Textbok-nya masing-masing txtCode, txtMerk, txtType dan txtMade dan terakhir properties text untuk buttonya yaitu Save.


Gambar Form2 untuk Entry Cars


Kembali ke Form1 buka View Code untuk Form1, copas kode dibawah ini :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Latihan1
{
    public partial class Form1 : Form
    {
        //deklarasi class instan dari Latihan1Entity
        private Latihan1Entities ObjLatihan;
        public Form1( )
        {
            InitializeComponent();
            ObjLatihan = new Latihan1Entities();
            //binding dataGridView1 ke list Cars
            dataGridView1.DataSource = ObjLatihan.Cars.ToList();
        }
        //event untuk tombol Refresh
        private void button1_Click(object sender, EventArgs e)
        {
             dataGridView1.Refresh();   
        }
        //event untuk tombol Add
        private void button2_Click(object sender, EventArgs e)
        {
            Form2 frm = new Form2();
            frm.statusForm = 1;//flag untuk add data
            frm.ShowDialog();
        }
        //event untuk tombol update 
        private void button3_Click(object sender, EventArgs e)
        {
            int code = Convert.ToInt32(dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value);
            Form2 frm = new Form2();
            frm.statusForm = 2;//flag untuk update data
            frm.code = code; // code car yang akan di edit
            frm.ShowDialog();
        }
    }
}

Pada View Code Form2 copas kode dibawah ini :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Latihan1
{
    public partial class Form2 : Form
    {
        private Latihan1Entities ObjLatihan;
        private Car car = new Car();
        public Form2( )
        {
            InitializeComponent();
            ObjLatihan = new Latihan1Entities();
            
        }
        //membuat properti untuk mode form(insert/update
        public byte statusForm
        {
            get;
            set;
        }
        //membuat properti untuk code car(jika mode-nya 1 nilainya null
        //jika mode-nya 2 maka berisi code Car
        public int code
        {
            get;
            set;
        }
        //event untuk tombol Save
        private void button1_Click(object sender, EventArgs e)
        {
           //mode Form 1 maka Add data
           //jika bukan satu maka update data 
            if (statusForm == 1)
            {
                car.merk = txtMerk.Text;
                car.type = txtType.Text;
                car.made = txtMade.Text;

               //menambah object car baru di EF
                ObjLatihan.Cars.AddObject(car);
               //perintah save perubahan di EF karena ada data
               //baru yang ditambahkan  
               ObjLatihan.SaveChanges();
            }
            else
            {
                
                car.merk = txtMerk.Text;
                car.type = txtType.Text;
                car.made = txtMade.Text;
                //perintah save di EF karena ada perubahan data
                ObjLatihan.SaveChanges();
 
            }
            this.Close();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            if (code!=0)
            {
                //lamda expersion di LINQ untuk select data berdasarkan code
                car = ObjLatihan.Cars.SingleOrDefault(x => x.code == code);
                txtCode.Text = car.code.ToString();
                txtMerk.Text = car.merk;
                txtType.Text = car.type;
                txtMade.Text = car.made;

            }
        }
    }
}

Build dan Run project anda, SELAMAT MENCOBA...

No comments:

Post a Comment