Bu makalemizde Linq To Sql ile Insert,Update ve Delete gibi veritabanı işlemlerine bakıyor olacağız.
Linq mimarisi özellikle programatik ortamlarda tasarlanan nesneler üzerinde, SQL cümlelerine benzer ifadeler ile sorgulamalar yapmamızı sağlar.Database tarafında yer alan tablo(Table), saklı yordam(Stored Procedure), görünüm(View), fonksiyon(Function) gibi unsurlarında programatik tarafta birer varlık(Entity) olarak ifade edilebilmesi, LINQ kurallarının SQL üzerindede gerçekleştirilebilmesini sağlamaktadır. Burada varlık katmanı(Entity Layer) olarakda düşünebileceğimiz yapı üzerinde yer alan nesneler, veritabanından çekilen sonuçları saklayabilmektedir. Bunun yanında programatik ortamdaki varlıklar üzerinde yeni varlık oluşturma, güncelleme, silme gibi operasyonlarda yapılabilmektedir. İşte bu makalemizde çoğunlukla CreateRetrieveUpdateDelete (CRUD) işlemleri olarak belirtilen bu işlemleri nasıl yapabileceğimizi görüyor olacağız.
Burada dikkat edilmesi gereken önemli noktalardan birisi New Project seçimi sonrası karşımıza çıkacak olan iletişim penceresinden .Net Framework 3.5 versiyonunun işaretlenmiş olmasıdır(Bu bize gerekli Assemblylerin yüklenmesini sağlaycaktır).Bu işlemde dikkat ederek bi Console Application oluşturuyoruz.
Bu adımdan sonra entity sınıflarının kolay bir şekilde oluşturulmasını sağlayan LINQ To SQL Class öğesini projemize eklememiz gerekmektedir(Dbml Classımız).
Bunun için Projemize sağ tıklayıp Add>New Item>Linq To Sql Classes diyoruz ve Dbml Classımızın adını Data.dbml olarak değiştirebilirsiniz.(Adı size Kalmış Ben Data olarak belirttim projede)
Böylece veritabanı üzerindeki nesnel yapıları programatik ortamda ifade edebileceğimiz Database Markup Language(dbml) dosyası otomatik olarak oluşturulmaktadır. Data.dbml dosyasnın kod tarafına bakıldığında DataContext tipinden türetilmiş olan bir sınıfın yazıldığı görülmektedir. Şimdi yapmamız gereken, üzerinde işlemler gerçekleştirilecek olan veritabanı nesnelerini tasarım ortamına sürükleyip bırakmaktır. Bunun için sol tarafta yer alan Server Explorer alanından veritabanındaki bir tabloyu alacağız.Bunun öncesinde SqlServer tarafında bir veritabanı oluşturmuş olmanız gerekmektedir.bunun için basit anlamda herhangibi bir veritabanınızda Urunler tablosu oluşturabilirsiniz.(UrunAdi,Fiyati,StokDrumu gibi alanlar işinizi görücektir.)
Server Explorer alanında Connection sağlayıp veritanımıza ulaşıyor ve Urunler tablomuzu süreükleyip dbml dosyasının üzerine bırakıyoruz.

Buradakı tabloyu artık bir sınıf alanları ise property olarak düşünebilirz.Dbml dosyamızı kaydedip kapatabilir ve Program.cs tarafına geçebiliriz.Burada herhangi bir linq sorgulaması yada bir crud işlemi yapabilmemiz için dbml classımızı örneklememiz gerkemektedir.
DataDataContext data = new DataDataContext();
//insert işlemi
data.Urunlers.InsertOnSubmit(new Urunler() { UrunAdi = "bilgisayar", Fiyati = "25", Marka = "Casper" });
//değişikliklierin veritabanında gerçekleşmesi için
data.SubmitChanges();
Ne kadar kolay değil mi? Store proc bile yazmadan veritabanımıza veri girdik.
//update işlemi yapalım
//veritabanında var olan sadece bir kayıt üzerinde update işlemi yaparken güncelleyeceğimiz ürünü First metodunda Lambda ifadelerini kullanarak gerekli kaydı sanki bir sql kodu gibi yazarak alabiliriz.
//buradaki datacontext nesnemizi örneklerken verdiğmiz isimdir.Yani datacontext üzerinde bulunan urunler tablosundan belirli bir kaydı seçtiriyoruz
Urunler guncellencekUrun = data.Urunlers.First(u => u.UrunId = 5);
guncellencekUrun.UrunAdi = "Değiştirilmiş ÜrünAdi";
guncellencekUrun.Fiyati = "50";
data.SubmitChanges();
Urunler silinecekUrun = data.Urunlers.First(u => u.UrunId = 5);
data.Urunlers.DeleteOnSubmit(silinecekUrun);
data.SubmitChanges();//UrunId'si 5 olan ürün silindi

güzel makale, teşekkürler mustafa hocam. +10
teşekkürler hocam bu makale için.. Aklıma şöyle birşey geliyor onuda bizle paylaşırsanız çok memnun oluruz. program çalışırken yeni bir tablo oluştuğunu düşünürsek mesela Tablo1. mesela burada programı yazarken DATA.dbml ‘ in içine atıyoruz Urunler tablosunu verilere erişmek ,değiştirmek, kullanmak çok kolay oluyor. peki kodlarla çalışma zamanında oluşan bu Tablo1′i nasıl DATA.dbml in içerisine atacağızda..DATA.dbml Tablo1′i de temsil eden bir sınıf haline gelecek..
MRP programı yazıyorum.. Lazım oldu bu söylediğim şey araştırmaktayım inş. yardımcı olabilirsiniz.. Teşekkürler iyi çalışmalar