Öncelikle belirtmek gerekirse, Visual Studio 2008'de gördüğümüz linq teknolojisi, Microsoft'un öne sürdüğü ve database programlamacılığına kısa bir çözüm getirdiği bir dil olan Linq. Karşımıza ilginç özellikleri ile ortaya çıkıyor.
Peki Linq dediğimiz şey nedir?
Bunu açıklayacak olursak linq, language-integrated query, yani dil bazlı integre edilmiş dil, C# ve Visual Basic içinden sorgu sorgulamamıza yarıyor.
Tek bununla da kalmıyor, Linq, SQL ve XML veri türleri üzerinden komut gönderebileceğimiz bir teknoloji de sunuyor.
Peki bunu nasıl kullanacağız?
SQL to Linq genel bakış olarak C# 3.5 ile gelen DBML teknolojisini anlatmam gerekiyor;
DBML- DataBase Markup Language
Database markup languge bize Linq teknolojisi ile veritabanımızı bağlayan dil olacak, bunu yapmak için öncelikle bir asp.net projesi üzerinde add new item yaparak;
Kendi Linq to Sql class diagram'ı yaratıyoruz.
Bu sayede veritabanımız ile linq arasında bağlantı sağlayabileceğiz, daha sonra oluşturmuş olduğumuz veritabanını sql server explorer ile bağlanaraktan DBML schema içine atıyoruz. Herhangi oluşturduğumuz bir veritabanı üzerinden gerçekleştiriyoruz;
Projemizi hemen derledikten sonra,görmüş olduğunuz üzere veritabanımız artık bir class olarak oluşturulmuş.
Bunun üzerinden istediğimiz sorguyu çalıştırmak için Linq Default.aspx.cs dosyamıza geliyoruz ve gerekli kodları yazıyoruz;
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//Linq classlarını ekliyoruz;
//Eğer webconfig dosyanızda bir hata varsa hata veren kısımları comment haline getiriniz;
using System.Linq;
using System.Data.Linq;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
2 adet header ekledikten sonra DBML'e ulaşmak için aşağıdaki kodları ekliyoruz;
protected void Page_Load(object sender, EventArgs e)
{
MyDataClassDataContext db = new MyDataClassDataContext();
}
DataContext class'ı bize class ile linq arasındaki bağlantıyı sağlayacak classtır. Bundan sonra linq dili ile bir takım sorgular göndereceğiz.
Gerekli kodları yazmadan önce bilmemiz gereken şeylerden bir tanesi lambda expressions.
Nedir bu lambda expressions?
Lamba expressions, linq ile birlikte gelen sorgu türüdür. Aşağıda incelersek;
params => expression
Lambda expression içeren bir void "=>" içermek zorundadır. Bu void ise tür olarak bize bir "var" içerikli sorgu yollar(Linq).
Örnek olarak bakacak olursak, lambda expression içermeyen bir sorgu;

Bu sorgu bir delegate void çağırarak tüm sorgu işlevini tamamlar.
Ancak bunu ("=>") lambda expresion ile yaparsak;

Lambda expressions ile linq sorgumuzu yollabildiğimiz görebiliyoruz.
Aynı şeyi kendi kodlarımız üzerinden deneyelim;
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//Linq classlarını ekliyoruz;
//Eğer webconfig dosyanızda bir hata varsa hata veren kısımları comment haline getiriniz;
using System.Linq;
using System.Data.Linq;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
MyDataClassDataContext db = new MyDataClassDataContext();
var kullanıcılarıseç = from c in db.Users
where db.Users.All(d => d.UserId > 10)
select c;
}
Linq ile veritabanımıza sorgu yollayabiliyoruz. Şimdi bu seçtiğimiz verileri bir databinder ile gösterelim. Burada asıl işlemi yapan sorgu
where db.Users.All(d => d.UserId > 10)
All extension void burada bize lambda expression kullanılınabilen bir tür olduğunu ve yield return element yapacağını anlatır.
Projemize bir gridview ekledikten sonra, yazdığım sorguyu gridview 'e bağlıyorum;
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//Linq classlarını ekliyoruz;
//Eğer webconfig dosyanızda bir hata varsa hata veren kısımları comment haline getiriniz;
using System.Linq;
using System.Data.Linq;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
MyDataClassDataContext db = new MyDataClassDataContext();
var kullanıcılarıseç = from c in db.Users
where db.Users.All(d => d.UserId > 10)
select c;
GridView1.DataSource = kullanıcılarıseç;
GridView1.DataBind();
}
}
Bu sayede veriyi istediğim yere çekebiliyorum.
Daha sonra insert,update,delete,stored procedure ve view komutlarını nasıl çalıştıracağımızı göreceğiz.
Saygılarımla,
Buğra Çuhadaroğlu