Bu yazımda
linq to sql konusu ile ilgili ilk örnek uygulamamı ve nasıl yaptığımı anlatacağım. Bu,
linq to sql'e ilk bakışımız olacak ve nasıl kullanıldığını da kavrayabileceğiz. Önceki linq konusu üzerine yazdığım yazıda bu teknolojinin yeni olduğunu ve kullanışlı olduğunu söylemiştim. Kullandıkça da bunun doğru olduğunu gördüm. Ve ilk örneği yapma ve anlatma aşamasına geldim. Yapacağım örnekte; öğrencilerin hangi dersleri aldığını
linq to sql yöntemi ile sorgulayacağız. Normalde bu örneği yapmak için veritabanı ilişkileri kurmamız gerekli ancak sadece
where komutu ile bu sorgulamayı yapacağız.
Öncelikle örnekte kullandığım sql veritabanım şu şekilde olacak:
Veritabanımız ve içinde tuttuğum veriler bu şekilde. Şimdi ise
linq to sql class'ını oluşturmaya geldi. Projemizde
App_Code klasörü üzerinde sağa tıklayıp
Add New Item deyip
LINQ to SQL Classes seçiyoruz.
LINQ to SQL Class'ını ekledikten sonra bu class desing mode olarak açılacak. Bu ekrana kullanacağımız veritabanı tablolarını
Server Explorer sekmesini açıp veritabanımızdan çekip ekliyoruz. Aşağıdaki gibi hazırlıyoruz.
Bu şemayı da oluşturduktan sonra kodlama kısmına geçebiliriz. Kodlama kısmında sayfamızda bulunan ve öğrencileri seçeceğimiz dropdownlisti dolduracağız. Daha sonra bu dropdownlistten seçilen öğrencinin aldığı dersleri getiren sorgulamayı yapacağız. Bütün bu işlemlerde
linq to sql yöntemini kullanacağız. Kodlarımız ise şöyle olacak:
protected void Page_Load(object sender, EventArgs e)
{
DataClassesDataContext db = new DataClassesDataContext();
if (!IsPostBack)
{
var drop = from kisiler in db.isimlers
select new { kisiler.ogrenci_id, kisiler.isim };
DropDownList1.DataSource = drop.AsEnumerable();
DropDownList1.DataTextField = "isim";
DropDownList1.DataValueField = "ogrenci_id";
DropDownList1.DataBind();
}
var query = from isim in db.isimlers
from ders in db.derslers
from ilisk in db.iliskis
// öğreniye göre dersleri getiren sorgumuz
where isim.ogrenci_id == ilisk.ogrenci_id &&
ders.ders_id == ilisk.ders_id &&
isim.ogrenci_id == int.Parse(DropDownList1.SelectedValue)
select new { ders.ders };
GridView1.DataSource = query.AsEnumerable();
GridView1.DataBind();
}
Görüldüğü gibi kodlarımız böyle. Bana göre gayet anlaşılır ve basit. Bu yöntem ile birçok karmaşık veritabanı ilişkilerini rahatlıkla kurabiliriz. Tabi ben burada basit yolu seçtim. İlerde bu ilişkileri farklı olarak nasıl kurabileceğimizi de vereceğim örneklerde bulabilirsiniz. Yaptığım uygulamanın ekran görüntüsü ise şöyle:
İyi Çalışmalar!