First Met with LINQ to SQL — 2

Dibagian kedua ini, aku melakukan eksplorasi terhadap LINQ to SQL untuk melakukan operasi insert, delete dan update database.

Insert into database
Untuk menambah data baru ke database, dibuat objek yang berhubungan dengan LINQ to SQL tabel entity kemudian panggil prosedur submitChanges pada objek data context.

Langkah langkah untuk insert ke database

  • Buat objek baru termasuk data yang akan dimasukkan.
  • Tambahkan objek yang baru dibuat ke tabel dalam objek data context
  • Panggil prosedur SubmitOnChanges.
  • Contoh berikut,akan memasukkan data baru ke tabel Customers dari Nortwind database.

    Kueri di database:

    INSERT INTO customers (CustomerID, CompanyName, ContactName ) VALUES ('AAAA','AAAA Corporation', 'Aa Jimi')
    NorthwindDataContext db = new NorthwindDataContext();
    Customer CustomerBaru = new Customer()
    {
       CustomerID = "AAAA";
       CompanyName = "AAAA Corporation"
       ContactName = "Aa Jimi"
    };
    db.Customers.InsertOnSubmit(CustomerBaru);
    db.SubmitChanges();

    Update database

    Melakukan perubahan data menggunakan LINQ ternyata cukup mudah. Update dilakukan dengan mengubah property dari objek kelas entitas dan kemudian memanggil prosedur SubmitChanges pada objek datacontext.

    Kueri di database:

    UPDATE Customers SET ContactName = 'Ali Baba' WHERE CustomerID = 'AAAA'
    NorthwindDataContext db = new NorthwindDataContext()
    var DataUpdate = (from cus in db.Customers
                      where cus.CustomerID.Equals("AAAA")
                      select cus).First();
    DataUpdate.ContactName  = "Ali baba"
    db.SubmitChanges();

    LINQ to SQL juga mampu mendeteksi relasi antar tabel, sehingga bisa melakukan update dua tabel sekaligus.

    NorthwindDataContext db = new NorthwindDataContext();
    Customer DataUpdate = (from cus in db.Customers
                where cus.CustomerID.Equals("AAAA")
                select cus).First();
    
    DataUpdate.ContactName = "Ali baba";
    Order DtOrder = new Order();
    DtOrder.ShipAddress = "Tambaksari";
    DtOrder.ShipCity = "Surabaya";
    
    DataUpdate.Orders.Add(DtOrder);
    db.SubmitChanges();

    Kode diatas menambahkan objek Order ke Customer. Ini menunjukkan adanya relasi foreign-parent key antara kedua tabel dan otomatis LINQ to SQL akan membentuk relasi ini pada saat SubmitChanges di jalankan.

    Berikut adalah contoh bagaimana LINQ to SQL mampu mengatur relasi antar tabel. Dicontoh berikut kita membuat pesanan baru. Kemudian dimasukkan data ship date dan fright cost, lalu diambil informasi detil dari 2 produk yang dipesan dari tabel product dan di hubungkan dengan tabel order. Lalu informasi ini dihubungkan dengan tabel customers

    NorthwindDataContext db = new NorthwindDataContext();
    
    //ambil infomasi detil dari produk
    Product produk1 = (from p1 in db.Products where p1.ProductName == "Chai" select p1).Single();
    Product produk2 = (from p2 in db.Products where p2.ProductName == "Tofu" select p2).Single();
    
    //Buat pesanan baru dan produk yang di pesan
    Order pesanan = new Order();
    pesanan.OrderDate = DateTime.Now;
    pesanan.Freight = 50;
    
    Order_Detail BrngDipesan1 = new Order_Detail();
    BrngDipesan1.Product = produk1;
    BrngDipesan1.Quantity = 20;
    
    Order_Detail BrngDipesan2 = new Order_Detail();
    BrngDipesan2.Product = produk2;
    BrngDipesan2.Quantity = 34;
    
    // hubungkan antara pesanan dan produk yang di pesan
    pesanan.Order_Details.Add(BrngDipesan1);
    pesanan.Order_Details.Add(BrngDipesan2);
    
    //dapatkan informasi customer
    Customer pemesan = (from c in db.Customers where c.CompanyName == "B's Beverages" select c).Single();
    
    //tambahkan informasi pesanan ke customer
    pemesan.Orders.Add(pesanan);
    
    //update database
    db.SubmitChanges(); 

    Penghapusan Data
    Untuk melakukan operasi penghapusan data menggunakan LINQ to SQL pada dasarnya hanya memasukkan objek yang ingin dihapus ke fungsi DeleteOnSubmit() atau DeleteAllOnSubmit(). DeleteAllOnSubmit() digunakan menghapus beberapa objek sekaligus.

    Kueri di database:

    DELETE from Customers where customerid = 'AAAA'
    NorthwindDataContext db = new NorthwindDataContext();
    var DataDiHapus = (from dthapus in db.Customers
           where dthapus.CustomerID.Equals("AAAA")
            select dthapus).First();
    
    db.Customers.DeleteOnSubmit(DataDiHapus);
    db.SubmitChanges();

    Jika data yang dihapus lebih dari satu:

    NorthwindDataContext db = new NorthwindDataContext();
    var DataDiHapus = from dthapus in db.Customers
            where dthapus.CustomerID.Equals("BBBB")
            select dthapus;
    
    db.Customers.DeleteAllOnSubmit(DataDiHapus);
    db.SubmitChanges();

    Pustaka: MSDN for Visual studio 2008, Perjalanan ke Desa LINQ eBook by Ronald Rajagukguk, 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 9 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: