LINQ ile INSERT, UPDATE ve DELETE

0 dakikada yazıldı

11657 defa okundu

Düzenle

LINQ ile veritabanına sorgu göndererek istediğimiz verileri
alabileceğimiz örneklere blogumda eski yazılarımda bolca yer verdim.
Fakat aslında LINQ sadece veritabanından veri çekmek için değil yeri
geldiğinde veritabanına veri göndermek, yani INSERT, UPDATE ve
DELETE
işlemleri için de rahatlıkla kullanılabilir.

Aşağıdaki şekliyle bir DBML dosyamız ve tabi ki bir de buna bağlı
veritabanımız olduğunu varsayalım.

Örneğimizdeki DBML dosyamızın yapısı.
Örneğimizdeki DBML dosyamızın yapısı.

Şimdi gelin bu veritabanından bir satırı LINQ ile veritabanından çekerek
içerisinde bir UPDATE işlemi yapalım.

Partial Class _Default

    Inherits System.Web.UI.Page

    Dim MyData As New
DataClassesDataContext

 

    Protected Sub Button1_Click(ByVal sender As Object,
ByVal e As System.EventArgs) Handles Button1.Click

        Dim x As AnaBolumler = (From MyTable In MyData.AnaBolumlers Select MyTable Take 1).SingleOrDefault

        x.AnaName = "Ahmet"

        MyData.SubmitChanges()

    End Sub

 

End Class

Yukarıdaki kod örneğinizde AnaBolumler adında bir değişken yaratarak
veritabanından tek bir kayıt almak için de LINQ deyiminde Take 1
kısmını kullanıyoruz. Siz kendi örneklerinizde isterseniz PK üzerinden
sorgular da düzenleyebilirsiniz. Yukarıdaki gibi bir LINQ sorgusu geriye
bir dizi döndüreceği için tek bir nesneye eşitleme şansımız olmaz. O
nedenle sorgunun geriye sadece tek bir nesne döndürebilmesi için ayrıca
SingleOrDefault deyimini de kullanmamız gerekiyor. Aldığımız
nesnenin herhangi bir özelliğini istediğimiz gibi değiştirdikten sonra
artık geriye kalan DataContext üzerinden SubmitChanges metodunu
çağırarak değişikliklerin veritabanına yansıtılmasını sağlamak.

Şimdi bir de INSERT işlemi yapalım.

    Protected Sub Button2_Click(ByVal sender As Object,
ByVal e As System.EventArgs) Handles Button2.Click

        Dim x As New
AnaBolumler

        x.AnaName = "Ahmet2"

        MyData.AnaBolumlers.InsertOnSubmit(x)

        MyData.SubmitChanges()

    End Sub

Kod içerisinde veritabanına gönderilmek üzere yeni bir AnaBolumler
nesnesi yaratarak nesnenin tüm özelliklerini belirliyoruz. Sonrasında
DataContext nesnemiz olan MyData üzerinden AnaBolumlers
tablosunun INSERT edilecek satırlar listesine InsertOnSubmit metodu
ile satırımızı ekliyoruz. Tüm bu işlemleri tamamladıktan sonra
DataContext'in SubmitChanges metodu ile değişikliklerin, yani bu
örnekte yeni eklenen satırların veritabanına aktarılmasını sağlıyoruz.

Son olarak bir DELETE yapmanın yoluna göz atalım.

    Protected Sub Button3_Click(ByVal sender As Object,
ByVal e As System.EventArgs) Handles Button3.Click

        Dim x As AnaBolumler = (From MyTable In MyData.AnaBolumlers Select MyTable Take 1).SingleOrDefault

        MyData.AnaBolumlers.DeleteOnSubmit(x)

        MyData.SubmitChanges()

    End Sub

Yukarıdaki kod içerisinde yarattığımız X adındaki AnaBolumler
nesnesine veritabanından silmek istediğimiz nesneyi bir LINQ sorgusu ile
aktarıyoruz. Sonraki satırda DataContext içerisinde AnaBolumler
tablosunun silinecek kayırlar listesine elimizdeki X değişkenini
DeleteOnSubmit metodu ile ekliyoruz. En sonunda da yine
DataContext'in SubmitChanges metodu ile değişikliklerin veritabanına
yansımasını sağlıyoruz.

İşte LINQ ile veritabanında kayıtlar üzerinde değişiklik yapmak bu kadar
kolay.

Yeni yılın bu ilk yazısında hepinize tekrar sağlıklı ve mutlu bir yıl
diliyorum.