Linq Nedir,Nerelerde
Kullanılır?
Linq’uin Türkçe karşılığı “Dİl ile Bütünleştirilmiş Sorgu”dur
.Linq teknolojisi, .Net Framework 3.5
ile beraber ortaya çıktı.Linq
teknolojisi ile veriye daha kolay erişebilir ve veri üzerinde tıpkı veri tabanı sistemlerindeki gibi basit
sorgular gerçekleştirebiliyoruz.Genelde veri kaynağı olaral XML ve ilişkisel veri
tabanları kullanırız.Linqin yaptığı şey programlama dilinde tek bir veri tabanı
kaynağına erişmek yerine veri erişimini
programlama dili ile tümleşik bir şekilde sunmaktır.Linq, sqldeki gibi sorgular
yapılmasını sağlar fakat farklı olarak bu sorguları nesnel ifadeler ile
yapar,bu ifadeler ile veri kaynağı arasındaki iletişimi sağlayan da Linq dir.Linq
yazdığımız sorguları
IEnumerable<T> türevli tipler üzerinde kullanabiliyoruz.
Lİnq’de kullanılan
sınıflar:
·
System.Query:Sorguların gerçeklştirilmesi için
gerekli olan sınıfları içerir.
·
System.Xml.Xlinq:Xml dökümanlarının
sorgulanabilmesi için gerekli olan sınıfları içerir
·
System.Linq :Linq e ait sınıf ve arabirimler bu
sınıf altında bulunur.
·
System.Data.Linq:Sql tablolarının sorgulanması
için gerekli olan sınıfları içerir
Linq Çeşitleri:
Lİnq;linq veritabanları,ado.net,xml
ve bellekte bulunan veriler için bize özel sağlayaccılar sunar.
Bunlar:
·
Lİnq to
Object:Koleksiyonları sorgulama yarar.Fakat sadece Ienumerable<T>
arabirmini destekleyen koleksiyonlar sorgulanır.System.Linq.Enumarable a ait
fonksiyonlar kullanılır.
·
Linq to
XML(Xlinq):Xml belgelerini sorgulamak için kullanılır,bu verileri hızlı ve
kolay sorgulama yeteneği kazandırıyor.System.Xml.Lİnq kütüphanesini kullanılır.
·
Lİnq to
SQL(Dlinq):İlişkisel veri tabanlarının sorgulanmasını sağlar,bunlar
sorgularken güç ve performans kazandırır.Linq ile sql arasındaki iletişimi
DBML(Database Markup Language-Veritabanı İşaretleme Dili) sağlar.
·
Linq to
Dataset:Ado.Nettek Dataset nesnelerinin ilişkisel veritabanı gibi
sorgulanmasını sağlar.
Ado.Net ve Linq to Sql Arasındaki fark:
Linq to Sql den
önce veritabanından veri çekmek için Ado.Net kullanılırdı(Günümüzde de
kullanılıyor tabi ki).Linq to sqlde kullanım kolaylığı ve kod kısalığı
vardır.Ado.Nette veri çekmek için connection
string,sqlcommand,dataset,bağlantıyı açma kapama gibi işlemler yapmak
zorundayız.Bu da çok fazla kod gerektiren yazılımlar için çok yük
getirir.Performans açısından ise hemen hemen aynılar.Kullanım tercih ve
alışkanlığa bağlı tabi ki.
Linq To Sql Örneği:
Linq to Sql Kullanırken Takip Edilecek Adımlar:
1)Projeye ters
tıklayıp add-new item deyip,linqtosql Classes eklemek ,
2)Classa isim verdikten sonra ekleme işlemi tamamlanmış
olur,
3)Northwind.dbml classı oluşturulmuş oldu,buraya kullanmak
istediğimiz veritabanı ve içeriğindeki kullanılacak olan tabloları eklememiz
gerekir.
4)Kullanılmak istenen veritabanını server explorer kısmından
eklememiz gerekecek.Data Connections üstine ters tıklayıp-add connection
dedikten sonra aşağıdaki ekran karşımıza gelecektir,burdan server adı ve
veritabanı adı seçilip eklenir.Ben bu örnekte hazır veritabanı olan Northwind’I
ekledim
5)Veri tabanını server explorer a ekledikten sonra veritabanı kullanılmaya
hazırdır.Veritabanını istediğimiz kısmını kullanabiliriz.Bütün tablolara burdan
erişebiliriz,kullanacaklarımızı sürükle bırak ile .dbml cllasına eklemeliyiz.
Bundan sonrası linq to sql in işi,kod tarafında istediğimiz
sql sorgularını gerçekleştirebiliriz.
Örnek bir uygulama olarak aşağıdaki kod parçasını
inceleyebiliriz:
Hazır veritabanı olan Northwind içindeki ürünleri getirmek için aşağıdaki metod
kullanılabilir.
Az once eklemiş olduğuz Northwind linq to sql classını kullanmak için
DataContexten nesne oluşturmak gerekir.
NorthwindDataContext
db = new NorthwindDataContext();
void Urundoldur(int
id)
{
grdUrunler.DataSource = from p in db.Products
where p.CategoryID == id
select new
{
Adi
= p.ProductName,
Stok = p.UnitsInStock,
Fiyat = p.UnitPrice,
Tedarikçi
= p.Supplier.CompanyName,
Kategorisi = p.Category.CategoryName
};
grdUrunler.DataBind();
}