Kamis, 26 Desember 2013

Kenalan Dengan Entity Framework


Libur-libur gini daripada bengong mending kita nulis blog lagi. Tulisan kali ini akan membahas tentang Entity Framework. Apa itu Entity Framework (EF)? EF adalah sebuah object-relational mapper yang memungkinkan .Net Developer untuk bekerja dengan relational data (database) menggunakan domain-specific object. (sumber). Penggunaan EF bertujuan mengurangi penggunaan data-access code yang biasa ditulis developer. 

 Sebelum melangkah jauh kita akan membahas tentang database terlebih dahulu. Sebuah model database adalah sebuah abstraksi dari real-world information yang akan ditampilkan. Seorang developer harus membuat sebuah second level dari abstraksi tersebut dikarenakan sebuah aplikasi tidak dapat melihat data tersebut seperti yang database lihat. Terkadang mendefinisikan second-level ini terkadang lebih sulit dari pada membuat database membutuhkan sebuah gambaran dari real-world, EF membantu developer untuk membuat gambaran tersebut. EF menggunakan graphical presentation dari data sehingga developer dapat melihat relationship antar table.

EF merupakan sebuah  Microsoft ActiveX Data Object .Net (ADO.NET) technology extension yang membuat memungkinkan kita untuk meng-Integrasikan database yang kita buat dengan IDE untuk membuat beberapa code yang dibuthkan dalam koneksi antara aplikasi dan database secara otomatis. Jadi ga percuma punya IDE yang harganya sampai puluhan ribu USD (pantesan aja banyak yang bajak) .

 Langsung saja kita buat aplikasi EF menggunakan visual studio 2012. kita create new project pilih windows Form Application berinama SimpleEF


pilih View|Other Windows|Data Source. kemudian pilih Add New Data Source. maka akan muncul dialog box seperti dibawah ini


Pilih Database, lalu next, muncul dialog box selanjutnya, pilih Entity Data Model. lalu next


Pada dialog box selanjutnya pilih empty model, kemudian finish



lalu akan muncul sebuah window kosong bernama  Model1.edmx seperti dibawah ini, pada solution explorer juga akan terdapat item Model1.edmx. pada windows inilah kita akan membuat entity-entity yang akan digunakan.




Setelah muncul windows model1.edmx kita akan menambahkan entity. klik toolbox entitiy seperti gambar dibawah ini.
Drag and drop entity pada windows model1.edmx

\
Maka akan muncul sebuah diagram class seperti gambar diatas. kita rename entitas tersebut dari entity mencadi Customer, dan properti Id menjadi CustomerID


Untuk menambahkan property baru pada entity, klik kanan pada entity|Add new|Scalar Property
tambahkan hingga menjadi seperti ini


Property-property yang kita buat akan memilki tipe string sebagai default, untuk merubahnya tinggal klik kanan pada property yang akan diubah, pilih properties (Alt+Enter). Akan muncul window seperti dibawah. untuk merubah tipe data, kita pipih pada kolom Type menjadi tipe data yang kita inginkan. 


Setelah membuat diagram ini apakah kita sudah bisa menjalankan aplikasi? belum, bahkan databasenya belum kita buat. untuk membuatnya kita klik kanan pada window diagram, pilih Generate Database From Model. pilih New Connection


Karena kita menggunakan SQLExpress pada visual studio 2012, kita isikan seperti pada gambar dibawah. server kita gunakan (localdb)\v.11.0, Gunakan Windows Authentification untuk log on, dan Tulis TestCustomer pada database name. lalu oke.


Setelah pilih Oke. maka visual studio akan meminta permission untuk membuat database karena database tersebut belum pernah dibuat/ belum exist, pilih oke. akan muncul windows berisi script DDL untuk membuat database dan table customer pada database. kita pilih finish. 



Akan muncul dialog box untuk koneksi ke database, setelah oke maka mucul windows Model1.edmx.sql yang berisi perintah2 sql. kita klik segitiga hijau pada windows tersebut. maka secara otomatis kita akan mengeksekusi perintah-perintah sql tersebut melalui visual studio.




Setelah selesai maka akan terbentuk database TestCustomer dan table Customers seperti gambar dibawah ini.



Sekarang tinggal bagaimana cara kita menjalankan aplikasi. kita buat form 1 agar menjadi seperti ini


Beri nama masing-masing button, btnCount,btnAdd,btnDelete,dan btnQuit

kita definisikan Model1Container1 (di aplikasi anda mungkin Model1Container) sebagai tempat menyimpan informasi dari database

public partial class Form1 : Form
    {
        private Model1Container1 ThisContainer;
        public Form1()
        {
            InitializeComponent();

            //intantiate the container
            ThisContainer = new Model1Container1();
        }
Double klik pada button Count. tuliskan code berikut

 private void buttonCount_Click(object sender, EventArgs e)
        {
            //display the number of database records
            MessageBox.Show("There are " + ThisContainer.Customers.Count().ToString() + " record");
        }
Double klik pada button Delete. tuliskan code berikut
  private void buttonDelete_Click(object sender, EventArgs e)
        {
            //obtain the first record
            Customer thisCustomer = null;
            if (ThisContainer.Customers.Any())
            {
                thisCustomer = ThisContainer.Customers.First();
            }
            else
            {
                //display error message if there are no records to delete
                MessageBox.Show("No records to delete");
                return;
            }

            //delete it
            ThisContainer.Customers.Remove(thisCustomer);
            ThisContainer.SaveChanges();

            // Inform the user. 
            MessageBox.Show("Deleted " + thisCustomer.CustomerID.ToString());
        }
Double klik pada button Add. tuliskan code berikut
  private void buttonAdd_Click(object sender, EventArgs e)
        {
            //create a new record
            Customer thisCustomer = ThisContainer.Customers.Create();

            // Add some random data. 
            Random ThisValue = new Random(DateTime.Now.Millisecond);
            thisCustomer.FirstName = ThisValue.Next().ToString();
            thisCustomer.LastName = ThisValue.Next().ToString();
            thisCustomer.AddressLine = ThisValue.Next().ToString();
            thisCustomer.City = ThisValue.Next().ToString();

            // Add a new record.  
            ThisContainer.Customers.Add(thisCustomer);
            ThisContainer.SaveChanges();

            // Inform the user. 
            MessageBox.Show("Added " + thisCustomer.CustomerID.ToString());
        }

Double klik pada button Add. tuliskan code berikut
   private void buttonQuit_Click(object sender, EventArgs e)
        {
            // Save the database. 
            ThisContainer.SaveChanges();

            // End the program. 
            Close();
        }
Setelah selesai tekan F5 pada IDE, maka aplikasi yang kita buat akan berjalan kemudian coba klik Add, maka kita akan memasukan data pada table Custumer seperti yang telah kita tuliskan pada event di btnAdd Data yang kita tuliskan akan masuk pada table Customer seperti gambar dibawah.



Mungkin cukup sekian tulisan kali ini, semoga bermanfaat dan cobalah explorer lagi. Terima kasih