ASP.NET
Network Akademi

Met Hostimg

“Bilgi paylaşıldıkça artar” sloganı ile .NET Platformuna ilişkin birikimlerin paylaşıldığı ASP.NET.TR Topluluğunda sizde “YAZAR” olmak için ; info@asp.net.tr e-mail adresine kendinizi anlatan bir e-mail göndererek başvuruda bulunabilirsiniz.

LINQ ile INSERT, UPDATE ve DELETE

Daron YÖNDEM
LINQ
10.03.2010 15:38:24
Hit : 10103

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.




BU İÇERİĞE YORUMDA BULUNUN


Bu MAKALE'ye yorum yapabilmek için Üye olmalısınız ...!


BU İÇERİĞE YAPILAN YORUMLAR