LINQ Teknolojisi

Ebru Demiryürek —  14 Ekim 2014 — 4 Comments

Merhaba arkadaşlar, size Linq teknolojisinden bahsedeceğim ve kısa bir giriş yapacağız. Diğer yazılarımda da Linq ile sorgular yazacağız.
Öncelikle Sql ve Linq to Sql’i kısaca tanımlayalım.

Sql Nedir?

Sql, veritabanı işlemlerini gerçekleştirmek için kullanılan komut dilidir. Sql ile veritabanı işlemleri yapılır.

Linq to Sql Nedir?

Linq, nesneler üzerinde bulunan ilişkisel veriyi hızlı bir şekilde sorgulamak için kullanılan sorgulama aracıdır. Linq to sql ise linq altyapısının sql veritabanı üzerine uyarlanmış halidir.

Linq Teknolojisi

Linq teknolojisi, platform farklılıklarından kaynaklanan sorunların kaldırılması için geliştirilmiştir. Linq ile sorguları nesnel ifadelerle hazırlayabiliriz. Linq, programcı açısından ADO.NET ile uzun uzadıya kod yazmaya son verir ve veriye kolayca erişebilmeyi sağlar. ADO.NET yapısı kullanıldığında hatalar çalışma zamanında ortaya çıkarken, linq teknolojisi kullanıldığında hatalar derleme zamanında ortaya çıkar. Fark edilen hatalar direkt olarak karşımıza çıkar ve hatayı önceden görmemiz programın düzeltmelerini erkenden yapmamızı sağlar.

ADO.NET’te veri çekmek için connectionstring, sqlcommand, dataset, bağlantıyı açma kapama gibi işlemler yapmak zorundayız. Bunları yaparken de fazla kod yazmak gerekiyor. Linq’da değişiklik neredeyse hiç yapılmamakta ve veritabanına ulaşırken bağlantının açık kapalı olmasını kontrol etmeye gerek kalmamaktadır.

Linq to Sql ile yazdığımız sorgular ADO.NET sorgusu haline dönüştürülüyor ve sorgu gerçekleşiyor. Yani, yazdıklarımız birer veri tabanı sorgusu haline dönüştürülüp gerçekleştiriliyor. Arkada koşan işlem bir ADO.NET yapısı olduğundan performans açısından ikisi de neredeyse aynıdır.

Linq’yu neden kullanmamız gerektiğini bir örnekle açıklayalım.

Static void Main(string[] args]
{
SglConnection baglanti=new SqlConnection("Data Source=" buraya server adresinizi yazın ";Initial Catalog=musteri;Integrated Security=True");
baglanti.Open();
SqlCommand sorgu=new SqlCommand(@”SELECT ad, soyad, tarih FROM musteriler WHERE sehir=@psehir”,baglanti);
sorgu.Parameters.AddWithValue(“@psehir”,”Ankara”);
SqlDataReader rd=sorgu.ExecuteReader();
while(rd.Read())
{
string name=rd.GetString(0);
string phone=rd.GetString(1);
DateTime date=rd.GetDateTime(2);
}
rd.Close();
baglanti.Close();

Şekil 1. Sql veritabanı ile yazılmış örnek kod

Kod ortamında sorgu işlemi string olarak yapıldığı için sorguların yazımı kısıtlanmaktadır.

Örnekte “psehir” isimli parametre uygulamadan veritabanına gönderilmektedir. Veritabanının tip testi ise çalışma zamanında yapılmaktadır ve bundan dolayı çalışma zamanında veri tip uyumsuzlukları sık yaşanır.

Name=rd.GetString(0) satırında index ve kolon isimlerine bağlı bir ilişki vardır. Bu durumda çalışma zamanında çalışacak diye bir şey yoktur, yine tip uyumsuzluğu olması muhtemeldir.

Tüm bu sebeplerden dolayı hem program yazmak zorlaşmakta hem de yapılacak işlemler sınırlı kalmaktadır. Bunun asıl sebebi veritabanı ve programlama ortamının birbirinden farklı olmasıdır. Çünkü veritabanında int kolonlar null olabilirken programda int değer null olamamaktadır. Platform farklılıklarından kaynaklanan bu uyumsuzluğu kaldırmak Linq yapısı geliştirilmiştir.

Diğer yazımda Visual Studio ortamında nasıl linq to sql kullanıldığını anlatacağım. Görüşmek üzere.

KAYNAKLAR

1-Algan, Sefer.(2011), Her Yönüyle C# 4.0, 15.Baskı, Pusula Kitabevi, İstanbul

2-İnternet, “SQL”, http://tr.wikipedia.org/wiki/SQL, Temmuz 2014

3-İnternet, ”Sql (Structured Query Language) nedir?”, http://sql.nedir.com/#ixzz3A4izVRiW, Aralık 2012

4-İnternet, ”LINQ to SQL’i performans açısından nasıl değerlendirirsiniz?”, http://www.inploid.com/t/linqtosql-i-performans-acisindan-nasil-degerlendirirsiniz/53539/, 2014

5-İnternet, ”ADO:NET nedir?”, http://www.ismailgursoy.com.tr/ado-net-nedir/, Mart 2012

Ebru Demiryürek

Posts

4 responses to LINQ Teknolojisi

  1. Merhaba, sql bir veritabanı yönetim sistemi değildir.

  2. Ebru Demiryürek 14 Ekim 2014 at 11:49

    evet çok haklısın, microsoft sql server tanımını yapmışım yanlışla 🙂 Düzelttiğin için teşekkür ederim.

Trackbacks and Pingbacks:

  1. LINQ Projesi Açmak | Kadın Yazılımcı - 16 Ekim 2014

    […] yerden hızla devam ediyoruz. Önceki yazımda Linq teknolojisinden ve faydalarından bahsetmiştim. Şimdi de Linq ile program yazmaya […]

ocozalp için bir cevap yazın Cevabı iptal et