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.
.png)
Ö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.