Linq teknolojisi platform farklılıkları nedeniyle ortaya çıkan sorunların kaldırılması için geliştirilmiş bir teknolojidir. ADO.NET ile uzun uzun yazılan sorgular yerine veriye kolayca erişebilmemizi sağlar. ADO.NET ile yazılan kodlarda hatalar çalışma zamanında ortaya çıkarken Linq da derleme zamanında ortaya çıkar ve hatayı önceden görüp düzeltmemize olanak sağlar. Linq teknolojisinde ADO.NET de olan connectionstring ile bağlantı kurma, sqlcommand ile sorgu oluşturma ya da sürekli bağlantı açıp kapatma işlemlerine gerek yoktur. Projemizde Linq to Sql Classes ı yardımıyla bağlantıyı sağlarız ve Linq sorgularımızı yazarız. Yazdığımız bu Linq sorguları program çalıştığında ADO.NET sorgusuna dönüştürülür ve işlemler gerçekleşir. Sorguların arkada ADO.NET olarak çalışması performans açısından bize neredeyse aynı sonucu verirken kod yazma aşamasında bizi yığınla kod yazma işleminden kurtarır.
Olayı veri çektiğim bir örnek ile açıkladığımda daha anlaşılır olacağını düşündüğüm için örneğimize geçiyorum. Veritabanımda bulunan Urunlertbl isimli tabloda bulunan tüm ürünleri çekeceğimiz bir örnek olsun.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
private void GetData() { SglConnection baglanti=new SqlConnection("Data Source="ServerAdi";Initial Catalog=Urunler; Integrated Security=True"); baglanti.Open(); SqlCommand sorgu=new SqlCommand("SELECT * FROM Urunlertbls",baglanti); SqlDataReader reader=sorgu.ExecuteReader(); while(rd.Read()) { string urunadi=reader.GetString(0); string urunkodu=reader.GetString(1); } reader.Close(); baglanti.Close(); } |
Yukarda gördüğünüz gibi önce db ye bağlanmak için bir bağlati cümlesi yazdık, ardından bu bağlantıyı kullanacağımız için bağlantıyı açtık. Veritabanına bir sorgu göndermek adına ‘sorgu‘ isminde SqlCommand nesenesi oluşturup bu nesneye vermek istediğimiz sorgu cümlesini yazdık, yanında ise ikinci parametre olarak bu sorgulamayı yaparken kullanacağı baglantıyı belirttik. Ardından sorgu sonucu dönen değeri SqlDataReader nesnesine attık. Daha sonra bu nesnenin içinde while döngüsü ile dönerek verileri tanımladığımız string lerin içine yükledik. Bu işlemden sonra önce SqlDataReader nesnesini ardından bağlantıyı kapattık. ADO.NET ile sorgulama yaparken her seferinde bu işlemleri yapmak yerine işlemi aşağıdaki gibi Linq ile yapmak basittir.
1 2 3 4 5 6 7 8 9 |
private void GetData() { DatabaseDataContext Data = new DatabaseDataContext(); var sonuc = from x in Data.Urunlertbls select x; } |
Yukarıdaki Linq sorgusunda ise Linq to Sql Classes ile oluştruduğumuz DatabaseDataContext ten Data adında bir nesne oluşturduk. Bu Data nesnesi yardımıyla tablolarımıza bağlanarak tek satırda sorgumuzu yazarak Urunlertbl tablosundan veri çekme işlemini yaptık.
Soru ve görüşleriniz için yorum yapabilirsiniz. Kolay gelsin .. 🙂