LINQ ile veritabanına sorgu göndererek INSERT, UPDATE ve DELETE işlemleri.

2 views
Skip to first unread message

firhus.com yönetim

unread,
Mar 27, 2012, 9:55:07 AM3/27/12
to firhus | Mitolojik Yazılım Merkezi
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ı.

Ş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 = "firhus"
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 = "firhus Mitolojik Yazılım Merkezi"
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.

www.firhus.com
Reply all
Reply to author
Forward
0 new messages