First Met with LINQ to SQL

Database merupakan salah satu element penting dalam pembuatan aplikasi. Untuk menghubungkan antara aplikasi dan database diperlukan jembatan penghubung. Di .net framework 2, dikenal metode ADO. Di .net framework 3,5 diperkenalkan metode LINQ. Language-Integrated Query (LINQ) dapat didefinisikan sebagai metode yang memudahkan dan menseragamkan cara akses data dari berbagai format seperti object, XML, DataSet dan lainnya.

LINQ to SQL memetakan relasi tabel dalam database menjadi model objek class. Ketika aplikasi dijalankan LINQ to SQL akan menterjemahkan query LINQ di objek class dan mengirimnya ke database. Ketika database mengembalikan nilai, LINQ to SQL menterjemahkan kembali menjadi objek class.
Dalam tulisan kali ini saya mencoba mempelajai LINQ dengan menterjemahkan metode ADO.NET. Saya membuat beberapa metode yang mempunyai fungsi yang sama dengan metode yang menggunakan ADO.NET.

Membuat kelas untuk data model.
Sebelum menggunakan LINQ to SQL ada yang harus dilakukan yaitu membuat sebuat kelas data model yang memetakan kolom dan tabel di basis data.

Buka Server Explorer dan buka koneksi ke database Northwind

Panel Server Explorer

Di Solution explorer klik kanan dan pilih add new item.Pilih LINQ to SQL Classes

Add New item window

Buka file Nortwind.dbml. Drag tabel product dan category dari server explorer ke window kiri Nortwind.dbml, dan drag store procedure GetProductByCategory ke window kanan northwnd.dbml.

Server Explorer

Secara otomatis akan terbentuk 2 kelas, product dan category serta satu method GetProductByCategory

DBML struktur

Tambahkan kontrol GridView untuk menampilkan data.

Menggunakan store procedure
Metode ADO.NET berikut mengambil data product berdasarkan category menggunakan store procedure dan dikembalikan dalam bentuk dataset.

protected void Page_Load(objectsender, EventArgs e)
{
    GridView1.DataSource = AmbilProdukByKategori(8);
    GridView1.DataBind();
}
protected DataSet AmbilProdukByKategori(int id)
{
    DataSet ds = new DataSet();
    SqlConnection koneksi = new SqlConnection("KONEKSI_STRING");
    koneksi.Open();
    SqlCommand cmd = new SqlCommand("GetProductByCategory", koneksi);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@categoryID", id);
    SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = cmd;
    da.Fill(ds);
    koneksi.Close();
    return ds;
}

Berikut adalah metode LINQ yang mempunyai fungsi yang sama seperti di atas

protected void Page_Load(object sender, EventArgs e)
{
    GridView1.DataSource = AmbilProdukByKategori(8);
    GridView1.DataBind();
}
protected System.Data.Linq.ISingleResultAmbilProdukByKategori(int id)
{
    NorthwindDataContext data = new NorthwindDataContext();
    var pro = data.GetProductByCategory(id);
    return pro;
}

Dari kode diatas, NorthwindDataContext merupakan kelas data model dari data Northwind. Untuk menggunakan class ini, lebih dulu dilakukan inisialisasi. Kemudian panggil method GetProductByCategory.

Menggunakan Query
Metode berikut mengambil data menggunakan query string.

protected void Page_Load(object sender, EventArgs e)
{
    GridView1.DataSource = GetProductwithQueryAdo(8);
    GridView1.DataBind();
}
protected DataSet GetProductwithQueryAdo(int a)
{
    DataSet ds = new DataSet();
    SqlConnectionkoneksi = new SqlConnection("KONEKSI_STRING");
    koneksi.Open();
    string kueri = "select productID, ProductName, UnitPrice from Products where CategoryID = '" + a + "'";
    SqlCommand cmd = new SqlCommand(kueri, koneksi);
    SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = cmd;
    da.Fill(ds);
    koneksi.Close();
    return ds;
}

Menggunakan metode LINQ yang berfungsi sama seperti di atas

protected void Page_Load(object sender, EventArgs e)
{
    GridView1.DataSource = GetProductwithQueryAdo(8);
    GridView1.DataBind();
}
protected System.Linq.IQueryable GetProductWithQuery(int a)
{
    NorthwindDataContext db = new NorthwindDataContext();
    var pr = from p in db.Produks
             where p.CategoryID == a
             select new { p.ProductID, p.ProductName, p.UnitPrice };
    return pr;
}

Pada ADO.net kueri ditulis sebagai string, jika query string salah, misalkan kata “from” tertulis “form”, aplikasi tidak melihat itu sebagai kesalahan. Di LINQ penulisan query menggunakan query expression syntax.

Baca juga First met with LINQ to SQL — part 2
Sumber : MSDN, Scott Gu’s Blog

About Yuniar

Penulis sekarang lebih banyak bekerja menggunakan teknologi Microsoft .NET secara umum dan TIDAK lagi menggunakan aplikasi MapXtreme.net dari MapInfo. Karena itu mohon maaf, jika pertanyaan-pertanyaan mengenai MapXtreme sudah tidak bisa saya jawab lagi.

Posted on 4 Juli 2009, in LINQ and tagged , , , . Bookmark the permalink. Tinggalkan komentar.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

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: