Skip to content Skip to sidebar Skip to footer

C# - CRUD Menggunakan Entity Framework Dengan Metode Database First

C# - CRUD Menggunakan Entity Framework Dengan Metode Database First


Assalamu'alaikum wr.wb.
Pada kesempatan ini, saya akan memberikan tutorial tentang cara menggunakan entity framework untuk menambah, mengubah, ataupun menghapus pada database SQL Server. Cara yang saya berikan ini merupakan cara yang saya dapat dari internet yang kemudian dirangkum menjadi satu. Beberapa blog atau web memberikan tutorial yang membingungkan, ada juga yang bahkan gagal. Tentu itu sangat mengganggu pengunjung. Oleh karena itu, saya merangkum semua artikel tentang entity framework yang sudah saya baca sebelumnya di artikel ini. Untuk proses yang akan saya berikan adalah proses untuk menambah data dari database, mengubah data yang ada, dan sekaligus menghapus. Selain itu, saya juga memberikan tutorial untuk menampilkan data dengan entity framework.

Tutorial yang akan saya tunjukkan ini merupakan tutorial yang berisi tulisan beserta gambar yang dijelasjan nantinya. hal ini bertujuan agar pembaca dapat memahami tutorial tentang entity framework ini dengan baik. Semoga saja tidak terjadi error. Karena sebelum saya memposting, saya sudah mencobanya terlebih dahulu. Jadi In sya Allah tutorial ini tidak ada error. Namun tidak menutup kemungkinan untuk terjadi error karena perangkat yang digunakan berbeda, bisa jadi terdapat error dari perangkat yang berbeda. Karena itu' silahkan tinggalkan jejak di komentar agar kita bisa menyelesaikannya bersama.



Baca Juga

Perlu diketahui bahwa artikel ini adalah lanjutan dari tutorial selebumnya yaitu Definisi dan cara menggunakan entity framework pada c#. Pada artikel tersebut saya sudah memberikan sedikit penjelasan dan cara untuk menggunakan entity framework, silahkan kunjungi artikel tersebut agar tidak terjadi kebingungan.

Sebenarnya tutorial ini bisa digabungkan dengan coding manual C#, karena tutorial entity framework ini hanya mempermudah akses ke database saja. selanjutnya untuk struktur kendali dan penerapan script tetaplah sama. Namun sebelumnya saya sarankan untuk mempelajari terlebih dahulu tentang konsep OOP pada C#. Meskipun tutorial entity framework ini sangat mempermudah, namun dasar dari semua ini adalah OOP. Dan apa daya mempelajari entity framework ini tanpa adanya pemahaman OOP.

Jika sudah sampai sini, saya rasa persiapannya sudah cukup. mari kita mulai tutorialnya.


1. Buat aplikasi seperti tutorial disini. Jika sudah, maka lanjutkan
2. Lihatlah pada bagian Solution Explorer. Posisi di Kanan atas. Buatlah folder baru dan beri nama View. Caranya adalah klik kanan pada project_entityFramework - add - new folder


Menambah folder visual studio


Setelah Folder sudah dibuat, lalu klik kanan pada view - add - windows form. Itu untuk membuat form didalam folder tersebut. Jika sudah berhasil maka akan muncul tampilan seperti diatas.

Folder view tersebut berfungsi untuk menaruh atau meletakkan view / form didalam folder tersebut. Hal ini bertujuan agar tampilan project terkesan lebih rapi. Memang tidak ada hubungannya dengan program. Namun kita sebagai programmer apabila terdapat penambahan atau update akan terasa sulit jika tampilannya berantakan.

3. double klik form yang baru kita buat tersebut, lalu akan muncul tampilan form kosong ditengah. kita lihat di bagian kiri. terdapat tab data source yang masih tersembunyi (jika tidak ada, cara menampilkannya adalah ke menu tab view - other windows - data sources).

Cara menambah data source di visual studio

Jika sudah ada tampilan seperti diatas, klik saja Add New Data Source... Setelah itu maka akan muncul tampilan dibawah ini.

Cara memilih datasource

Tampilan diatas adalah tampilan untuk mengkonfigurasikan datasource. Terdapat tiga pilihan, Database, server, dan Object. Karena kita menggunakan konsep OOP, kita pilih saja Object. Lalu klik Next

memilih object pada entity framework


Tampilan diatas adalah tampilan untuk memilih object yang dikonfigurasikan dengan data source. lihat pada project_entity_framework terdapat tanda panah kecil sebelum kotak putih, klik saja maka akan muncul pilihan baru. centang pada project_entity_framework. Lalu klik Finish.

4. Jika sudah melakukan langkah langkah diatas, maka datasource berhasil dibuat. Data source yang dibuat tersebut dikonfigurasikan dengan entity framework sehingga atribut dari data source tersebut sama dengan atribut yang ada pada entity framework. Dan atribut di entity framework sudah dikonfigurasikan dengan database. Artinya konfigurasi data source ke database melalui perantara entity framework. Begitulah OOP. Saling melempar data dari satu class ke class lain. Berikut ini adalah tampilan dari datasource tadi yang sudah berhasil dibuat

tampilan data source

Lihatlah datasource diatas terdapat banyak sekali atribut. Jadi kita cukup buat satu data source saja dari satu project. lalu kita lihat terdapat menu dropdown DataGridView, Detail, None yang memiliki fungsi tersendiri. Dimana DatagridView berfungsi untuk memberikan menu tabel pada form, Detail berfungsi untuk memberikan menu text, dan None tidak memberikan apa - apa. Hal itu akan saya jelaskan nanti. untuk saat ini biarkan saja seperti itu.

5. Selanjutnya kita buka frmBarang.cs. jangan lupa data source jangan di close. klik pada barang di datasource dan drag ke tampilan form. Maka akan muncul DataGridview. Selanjutnya pada dropdown barang, pilih detail dan drag lagi ke form. Maka akan muncul textBox dan label. Dan desain seperti gambar dibawah ini :

Cara membuat form dengan datasource

Tutorial 1 - 5 ini adalah tutorial untuk membuat form dari data source. Kita hanya tinggal drag and drop saja. ini memang tidak ada kaitannya dengan entity framework, namun tutorial tadi sangatlah berguna untuk kecepatan dalam membuat aplikasi. Lihatlah kita bisa membuat tampilan seperti diatas hanya dalam ditungan detik.

Selanjutnya kita buat sendiri 5 button yang terdiri dari btnTambah, btnUbah, btnHapus, btnSimpan, dan btnBatal. lalu letakkan di posisinya masing - masing sesuai selera anda. button yang kita buat memiliki fungsinya masing - masing. Tentu untuk tambah, ubah, dan hapus hanyalah menentukan enabled saja.

untuk enabled. pada semua textbox, btnSimpan dan btnUbah, buatlah enabled = false di properties. Caranya klik sekali pada masing - masing item dan kita lihat di bagian kanan bawah. lalu kita cari enable.

Cara agar textbox tidak bisa diedit

Cara ini berfungsi agar textbox dan button tertentu tidak bisa diotak atik. Tentu ini sangat diperlukan dalam suatu aplikasi agar terhindar dari kesalahan memanipulasi data.

Setelah semuanya selesai, kita bisa melihat tampilan program pada frmBarang adalah seperti dibawah ini

tampilan program cs


program diatas masih kosong. Kita perlu menambahkan struktur kendali guna memanipulasi data ke database. Saya akan memberikan program secara berurutan agar tidak terjadi error. Silahkan copas saja dan pahami baik - baik. Berikut ini merupakan program yang dibutuhkan :


Variabel yang dibutuhkan
Letakkan script dibawah ini tepat diatas constructor (public FrmBarang). Jika terjadi error, arahkan corsor pada script yang error tersebut. Lalu akan muncul icon lampu. klik icon lampu tersebut dan pilih pilihan yang paling atas

private string actionEnableText;
private barang b;
private Contoh_penjualanEntities penjualan;

Variabel diatas adalah variabel global yang mana variabel tersebut berada diluar fungsi. Hal ini karena variabel tersebut dibutuhkan oleh banyak fungsi. Maka dari itu variabel diatas saya buat menjadi variabel global agar semua fungsi didalam class dapat mengakses variabel tersebut.


Fungsi Refresh
Fungsi dibawah ini bisa diletakkan dimana saja asalkan berada diluar fungsi lain.

private void refreshForm()
{
   try
   {
      id_barangTextBox.Text = "";
      nama_barangTextBox.Text = "";
      harga_barangTextBox.Text = "";
      jenis_barangTextBox.Text = "";
      stok_barangTextBox.Text = "";
      barangDataGridView.DataSource = penjualan.barangs.ToList();
   }
   catch { }
}

Fungsi diatas berguna untuk mengosongkan textbox dan mengisi kembali data di datagridview dari database. Fungsi ini sangat berpengaruh jika kita telah melakukan aksi crud, maka refresh diperlukan agar form kembali seperti awal kita membukanya.


Fungsi Convert ke Rupiah

private void convertRupiah(TextBox textbox)
{
   try
   {
     double d = Convert.ToDouble(textbox.Text);
     textbox.Text = d.ToString("##,###");
     textbox.SelectionStart = textbox.Text.Length;
   }
   catch
   {
     textbox.Text = "";
   }
}

Fungsi diatas berguna untuk mengubah tampilan inputan dari textboxt menjadi seperti rupiah. Misal saya inputkan angka 12000. Maka secara otomatis program akan mengubah angka tersebut menjadi 12,000. Ini sangat bergurna untuk menginput nilai yang besar seperti nilai desimal atau mata uang. Hal ini bertujuan agar tidak ada kesalahan dalam menginput.


Fungsi agar textbox hanya bisa diinput dengan angka

private void angka(object sender, KeyPressEventArgs e)
{
  if (char.IsDigit(e.KeyChar) == false
                && (int)e.KeyChar != (int)Keys.Back)
  {
      e.Handled = true;
  }
}

Fungsi diatas berguna untuk memberikan efek pada textbox agar hanya bisa diinput angka saja. Jika kita mengetik huruf, otomatis program tidak akan merespon sehingga huruf tersebut tidak tertulis di textbox. Hal ini sangat berguna untuk penginputan angka seperti penjumlahan atau stok. Karena database akan memberikan error jika sampai salah input.


Fungsi untuk enable textbox dan button

        private void enableTextbox(bool a)
        {
            nama_barangTextBox.Enabled = a;
            harga_barangTextBox.Enabled = a;
            jenis_barangTextBox.Enabled = a;
            stok_barangTextBox.Enabled = a;
            btnSimpan.Enabled = a;
            btnBatal.Enabled = a;
            refreshForm();
        }

Fungsi diatas untuk memberikan efek pada textbox dan button yang di enabled false tadi. Selain itu terdapat fungsi refreshForm() didalamnya. Artinya ketika kita memanggil fungsi ini, maka secara otomatis fungsi refreshForm juga ikut terpanggil.


Program pada constructor (Public FrmBarang())

        public FrmBarang()
        {
            InitializeComponent();
            refreshForm();
            stok_barangTextBox.KeyPress += new KeyPressEventHandler(angka);
            harga_barangTextBox.KeyPress += new KeyPressEventHandler(angka);
        }

Disinilah letak constructor. constructor di program ini diisi dengan memanggil refreshForm dan angka. kita bisa lihat paa stok_barangTextBox dan harga_barangTextBox kita memanggil fungsi yang sama dengan event yang sama juga (keypress). Tentu itu sangat mempersingkat program.


Program pada btnSimpan

        private void btnSimpan_Click(object sender, EventArgs e)
        {
            //disini coding untuk mengeksekusi crud
            b = new barang();
            b.nama_barang = nama_barangTextBox.Text;
            b.harga_barang = Convert.ToDecimal(harga_barangTextBox.Text);
            b.jenis_barang = jenis_barangTextBox.Text;
            b.stok_barang = Convert.ToInt32(stok_barangTextBox.Text);

            penjualan = new Contoh_penjualanEntities();
            if (actionEnableText.Equals("INSERT"))
            {
                penjualan.Entry(b).State = System.Data.Entity.EntityState.Added;
            }
            else
            {
                b.id_barang = Convert.ToInt16(id_barangTextBox.Text);
                if (actionEnableText.Equals("UPDATE"))
                {
                    penjualan.Entry(b).State = System.Data.Entity.EntityState.Modified;
                }
                else if (actionEnableText.Equals("DELETE"))
                {
                    penjualan.Entry(b).State = System.Data.Entity.EntityState.Deleted;
                }
            }
            penjualan.SaveChanges();
            enableTextbox(false);
        }

Disini adalah isi dari program btnSimpan. Fungsi dari btnSimpan sendiri dapat dibuat otomatis oleh program hanya dengan double klik button tersebut. Saya sarankan agar tidak mengetik fungsi tersebut sendiri karena itu tidak akan berpengaruh apa - apa.

pada btnSimpan bisa kita lihat bahwa kita melempar data dari textbox ke variabel yang ada pada class barang(class barang sudah dibuat oleh entity framework). Lalu kita memberikan aksi sesuai dengan isi dari variabel actionEnableText.  Perbedaan aksi dari INSERT, UPDATE, DELETE sendiri adalah terletak pada EntityState yang digunakan. Bisa dilihat sendiri dari program diatas. untuk insert bisa menggunakan added, untuk update bisa menggunakan modified, untuk delete bisa menggunakan deleted

Lalu kita lihat saveChanges() setelah proses dilakukan. sebenarnya proses diatas seperti add, modified, dan delete tersebut hanyalah memanipulasi data di entity framework, namun belum kita simpan ke database. Maka dari itu saveChanges adalah fungsi yang dibutuhkan untuk menyimpannya.


Program pada btnUbah

        private void btnUbah_Click(object sender, EventArgs e)
        {
            //disini coding untuk mengubah data barang
            actionEnableText = "UPDATE";
            enableTextbox(true);
        }

Sama seperti btnSimpan. Untuk membuat fungsi diatas, cukup double klik button di design saja. Kita bisa melihat jika btnUbah di klik, maka akan mengubah actionEnableText dan memanggil fungsi enableTextBox


Program pada btnHapus

        private void btnHapus_Click(object sender, EventArgs e)
        {
            //disini coding untuk menghapus data barang
            actionEnableText = "DELETE";
            enableTextbox(false);
        }

Sama seperti btnSimpan. Untuk membuat fungsi diatas, cukup double klik button di design saja. Kita bisa melihat jika btnHapus di klik, maka akan mengubah actionEnableText dan memanggil fungsi enableTextBox


Program pada btnBatal

        private void btnBatal_Click(object sender, EventArgs e)
        {
            //disini coding untuk membatalkan crud
            enableTextbox(false);
        }

Sama seperti btnSimpan. Untuk membuat fungsi diatas, cukup double klik button di design saja. Kita bisa melihat jika btnBatal di klik, maka memanggil fungsi enableTextBox


Program pada btnTambah

        private void btnTambah_Click(object sender, EventArgs e)
        {
            //disini coding untuk menambah data barang
            actionEnableText = "INSERT";
            enableTextbox(true);
        }

Sama seperti btnSimpan. Untuk membuat fungsi diatas, cukup double klik button di design saja. Kita bisa melihat jika btnTambah di klik, maka akan mengubah actionEnableText dan memanggil fungsi enableTextBox


Program CellDoubleClick

        private void barangDataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            id_barangTextBox.Text = barangDataGridView[0, e.RowIndex].Value.ToString();
            nama_barangTextBox.Text = barangDataGridView[1, e.RowIndex].Value.ToString();
            harga_barangTextBox.Text = barangDataGridView[2, e.RowIndex].Value.ToString();
            jenis_barangTextBox.Text = barangDataGridView[3, e.RowIndex].Value.ToString();
            stok_barangTextBox.Text = barangDataGridView[4, e.RowIndex].Value.ToString();
        }

Sama seperti btnSimpan. Untuk membuat fungsi diatas, cukup klik pada datagridview tersebut, lalu kita lihat event (icon petir). Setelah itu kita cari cellDoubleClick. Dan double klik tulisat tersebut.

Event Visual Studio


 button di design saja. Kita bisa melihat jika kita double klik pada baris tertentu di tabel barang, kita bisa memberikan data pada textbox tertentu. Yang sudah dibedakan berdasarkan indexnya.


Program TextChanged rupiah

        private void harga_barangTextBox_TextChanged(object sender, EventArgs e)
        {
            convertRupiah(harga_barangTextBox);
        }

Sama seperti barang_dataGridView.klik pada textbox tersebut, lalu kita lihat event (icon petir). Setelah itu kita cari TextChanged. Dan double klik tulisat tersebut.. Kita bisa melihat jika kita mengetik pada textboxt harga_barang, maka secara otomatis angka tersebut terconvert ke bentuk rupiah.


Tampilan Program Keseluruhan

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

namespace Project_entity_framework.View
{
    public partial class FrmBarang : Form
    {
        private string actionEnableText;
        private barang b;
        private Contoh_penjualanEntities penjualan;

        public FrmBarang()
        {
            InitializeComponent();
            refreshForm();
            stok_barangTextBox.KeyPress += new KeyPressEventHandler(angka);
            harga_barangTextBox.KeyPress += new KeyPressEventHandler(angka);
        }

        private void refreshForm()
        {
            try
            {
                id_barangTextBox.Text = "";
                nama_barangTextBox.Text = "";
                harga_barangTextBox.Text = "";
                jenis_barangTextBox.Text = "";
                stok_barangTextBox.Text = "";
                barangDataGridView.DataSource = penjualan.barangs.ToList();
            }
            catch { }
        }

        private void convertRupiah(TextBox textbox)
        {
            try
            {
                double d = Convert.ToDouble(textbox.Text);
                textbox.Text = d.ToString("##,###");
                textbox.SelectionStart = textbox.Text.Length;
            }
            catch
            {
                textbox.Text = "";
            }
        }

        private void angka(object sender, KeyPressEventArgs e)
        {
            if (char.IsDigit(e.KeyChar) == false
                && (int)e.KeyChar != (int)Keys.Back)
            {
                e.Handled = true;
            }
        }

        private void enableTextbox(bool a)
        {
            nama_barangTextBox.Enabled = a;
            harga_barangTextBox.Enabled = a;
            jenis_barangTextBox.Enabled = a;
            stok_barangTextBox.Enabled = a;
            btnSimpan.Enabled = a;
            btnBatal.Enabled = a;
            refreshForm();
        }

        private void btnSimpan_Click(object sender, EventArgs e)
        {
            //disini coding untuk mengeksekusi crud
            b = new barang();
            b.nama_barang = nama_barangTextBox.Text;
            b.harga_barang = Convert.ToDecimal(harga_barangTextBox.Text);
            b.jenis_barang = jenis_barangTextBox.Text;
            b.stok_barang = Convert.ToInt32(stok_barangTextBox.Text);

            penjualan = new Contoh_penjualanEntities();
            if (actionEnableText.Equals("INSERT"))
            {
                penjualan.Entry(b).State = System.Data.Entity.EntityState.Added;
            }
            else
            {
                b.id_barang = Convert.ToInt16(id_barangTextBox.Text);
                if (actionEnableText.Equals("UPDATE"))
                {
                    penjualan.Entry(b).State = System.Data.Entity.EntityState.Modified;
                }
                else if (actionEnableText.Equals("DELETE"))
                {
                    penjualan.Entry(b).State = System.Data.Entity.EntityState.Deleted;
                }
            }
            penjualan.SaveChanges();
            enableTextbox(false);
        }

        private void btnUbah_Click(object sender, EventArgs e)
        {
            //disini coding untuk mengubah data barang
            actionEnableText = "UPDATE";
            enableTextbox(true);
        }

        private void btnHapus_Click(object sender, EventArgs e)
        {
            //disini coding untuk menghapus data barang
            actionEnableText = "DELETE";
            enableTextbox(false);
        }

        private void btnTambah_Click(object sender, EventArgs e)
        {
            //disini coding untuk menambah data barang
            actionEnableText = "INSERT";
            enableTextbox(true);
        }

        private void btnBatal_Click(object sender, EventArgs e)
        {
            //disini coding untuk membatalkan crud
            enableTextbox(false);
        }

        private void barangDataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            id_barangTextBox.Text = barangDataGridView[0, e.RowIndex].Value.ToString();
            nama_barangTextBox.Text = barangDataGridView[1, e.RowIndex].Value.ToString();
            harga_barangTextBox.Text = barangDataGridView[2, e.RowIndex].Value.ToString();
            jenis_barangTextBox.Text = barangDataGridView[3, e.RowIndex].Value.ToString();
            stok_barangTextBox.Text = barangDataGridView[4, e.RowIndex].Value.ToString();
        }

        private void harga_barangTextBox_TextChanged(object sender, EventArgs e)
        {
            convertRupiah(harga_barangTextBox);
        }
    }
}


Setelah kita mengikuti tutorial diatas, maka program diatas adalah tampilan program secara keseluruhan. Itu artinya kita telah selesai dalam membuat program untuk CRUD dengan entity framework Database First. Dengan ini yang perlu kita lakukan hanyalah tinggal run dan mencoba aplikasi tersebut. Namun sebelum itu, pada Solution Explorer, kita buka program.cs. Lalu kita ganti  Form1() dengan view.FrmBarang(). Hal itu bertujuan agar ketika project dijalankan, maka FrmBarang adalah frm yang pertama kali muncul.


Run Program
Coba kita run, lalu coba untuk mengetikkan sesuatu di textbox, pasti tidak bisa. Karena textboxt tersebut telah di enabled = false. Cara agar kita bisa mengetik di textbox adalah dengan menekan salah satu tombol (tambah, ubah, hapus). disini kita klik saja tombol tambah. Dan isi seperti data dibawah ini ;

Design Form Barang


Kita bisa melihat bahwa textbox bisa diinput setelah kita mengklik salah satu tombol dibawah. Ini karena perintah yang kita buat seperti itu. Hal ini bertujuan agar tidak ada kesalahan dalam pemilihan aksi. Kita juga bisa melihat di form tersebut, id_barang tidak bisa diisi. Karena id_barang adalah primary key identity yang artinya dapat terisi sendiri jika kita melakukan proses insert. Coba kita klik simpan dan lihat hasilnya

C# - CRUD Menggunakan Entity Framework Dengan Metode Database First


Jika tidak ada error, maka secara otomatis data tersimpan di database dan muncul di datagrid. Lalu kita lihat textbox kembali enabled = false.

Penutup

Tutorial ini saya buat dengan cara mencobanya terlebih dahulu. Saya menggunakan windows 8.1 dan visual studio 2017 sebagai GUI. Namun saya rasa hal itu tidaklah bermasalah. Demikianlah tutorial yang dapat saya berikan. Apabila terdapat kesalahan saya mohon maaf. Apabila terjadi error, silahkan tinggalkan jejak di kolom komentar. Terimakasih atas kunjungannya. Assalamu'alaikum wr.wb


Post a Comment for "C# - CRUD Menggunakan Entity Framework Dengan Metode Database First"