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
Merhaba, sql bir veritabanı yönetim sistemi değildir.
evet çok haklısın, microsoft sql server tanımını yapmışım yanlışla 🙂 Düzelttiğin için teşekkür ederim.
Rica ederim.