LINQ Dünyası ve Getirdikleri

.NET 3.0 Framework ile birlikte gelen Linq ve beraberinde dile eklenen değişiklikleri inceliyoruz.

Merhabalar

Bu yazımda sizlere Microsoft?un veri erişim teknolojisinden biri olan Linq ve beraberinde dile eklenen farklı kavramları tek tek açıklamayı amaçlıyorum.

LING (Language Integrated Query) kelime olarak dil ile bütünleşik sorgu anlamına geliyor. Peki nereden çıktı bu şimdi? Bir Asp.net uygulaması veri (veritabanı) ve arayüz(sayfalar) kısmı olarak iki ayrı platformdan oluşur. Bu platformlar arası iletişimi kodlar aracılığıyla yapar ve işlemlerimizi gerçekleştiririz. Daha ayrıntıya girecek olursak; veritabanında olan her tablo için kod kısmında buna karşılık gelen bir entity class oluştururuz. Diğer bir değişle nesne(object) oluştururuz. Veritabanından aldığımız ilgili tablodaki resultset'leri kod kısmımızda örneğini oluşturduğumuz nesnelere yükleyerek kullanırız. Böyle bir durumda yaptığımız uygulamada DATA != OBJECT uyuşmazlığı ortaya çıkar ki, Linq teknolojisinin ortaya çıkma sebeplerinden birisi de budur.

Microsoft bu teknolojiyi .NET 3.0 ile bereber framework çatısına ekledi. Linq sorgulamalarını projemizde kullanabilmek için System.Data.Extention kütüphanesini eklememiz gerekiyor. Linq Sql server içerisinde yaptığımız sorgulama işlemelerini kod kısmında yapmamızı sağlıyor. Proje verilerinin farklı farklı kaynaklar olabileceğini düşündüğümüzde - Örneğin; Database, File (Access, XML), RAM (Array, Object) bu kaynaklardan alınan verilerin kod kısmında tek bir standart altında sorgulanması etkileyici ve kolaydır. Yazılan kodların anlaşılmasını ve hızlı uygulama geliştirmeyi beraberinde getirdiği görülebilir.

Şimdi birkaç linq sorgusu yazalım.


ContentCategory cat =  from d in Context.ContentCategories

                       where d.CategoryId == mycat.CategoryId

                       select d;



Yukarıdaki sorguda entityframework aracılığıyla oluşturulan nesneden çekilen bir resultseti görülmektedir. Burada select işlemi yapılıyor. Linq'nun syntax'ına dikkat ettiğinizde tersten bir yazımının olduğu görülebilir.



Yukarıda verilen sorguda kod kısmında oluşturduğum dizi üzerinde yapılan sorgulama işlemi görülüyor. t-sql de yaptığımız sorgulama işlemlerinin tamamını Linq ile de yapabiliyoruz.

Şimdi Linq sorgulamalarını desteklemek için .NET 3.0 ile dile getirilen yeniliklerden bahsetmek istiyorum.

Imlicitly typed local variables (Bilinçsizce türlendirilmiş yerel değişkenler)

VAR(variable) anahtar kelimesi değişken bildirme biçimidir. Var ile belirtilen ilk değere bakarak değişkenin tipine karar verir. Var ve Object birbirinden tamamen farklıdır. Object bir veri tipidir.


// null değer verilemez

        var i = 1;

        var i = "software";

        var i = 3.9;



Object & Collection Initializer (Nesne ve koleksiyon başlatıcısı)

Nesne ve koleksiyonun örneğini(Instance) oluştururken aynı zamanda değer vermemize olabak sağlayan bir yapıdır. Örneğin;


Content item = new Content{

            CategoryId = 1,

            ContentHead = "BAŞLIK",

            ContentText = "METİN... EFENDİM :)"

        };



Örnekte de görüldüğü gibi burada constructer metodunu kullanmıyoruz.

Anonymous Types (İsimsiz veri tipleri)
Var anahtar kelimesiyle birlikte oluşturduğumuz nesnelerdir. Burada new keyword'unu kullanarak istediğimiz özelliklere sahip nesneler oluşturabiliriz. Alanlara ait tipler ilk verilen değere göre belirlenir.


var personal = new

        {

            Id = 1,

            Name = "",

            Surname = "",

            Age = 21,

            Department = "Sale"

        };



Extention Method (Genişleme methodları)

Framework çatısı içerisinde yer alan veri tiplerini yeni methodlarla genişletme biçimidir. Örneğin;



Lamda Expression

Bu ifadeleri matematiksel fonksiyon olarak nitelendirirsek yanlış söylemiş olmayız. Verilen değere karşılık bir sonuç üreten ifadelerdir. => işareti ile belirtilir ve extention methodlarla beraber kullanılır. Lamda ifadelerini kullanarak bir çok işlemi rahatlıkla yapabiliriz. Aşağıdaki ifadeye bakalım.



Evet Linq bu incelediğimiz maddelerin hepsini kapsar ve Linq sorgulamalarında bu formları kullanırız. Linq sorguları veri kaynağına göre farklı şekilllerde isimlendirilir. LinqToSql, LinqToXml, LinqToEntity vs. bu farklı sorguları da bir sonraki yazımızda ele almayı umuyorum.

İyi çalışmalar
  • Etiketler;
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git