mehmetduran.com - Paylaşmak Güzeldir...
Linq to Sql - İlk Örnek Uygulamam
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:

Linq to Sql - İlk Örnek Uygulamam - Veritabanı
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 - İlk Örnek Uygulamam - Class Ekleme

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.

Linq to Sql - İlk Örnek Uygulamam - Şema
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:

Linq to Sql - İlk Örnek Uygulamam - Ekran Görüntüsü
İyi Çalışmalar!
Mehmet Duran 16 Eylül Salı 2008 4 3439 3,0
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar Building XNA 2.0 Games (E-Book) Linq Unleashed for C# (E-Book) Javascript ile Asp.net'te Kendi Validation'larımızı Oluşturma Asp.net 2.0 - Selçuk Özdemir Yeni Tasarımı ile Facebook
Yorumlar
Yorum Yaz
RSS Yorum Takibi
hasan chutchus 14 Ağustos Cumartesi 2010 08:47 #1
yazınız için teşekkürler bir sorun olacak. program çalışırken yeni bir tablo oluştuğunu düşünürsek mesela ismi Tablo1 olsun. Bu .dbml uzantılı sınıfın Tablo1'i de temsil eden bir sınıf haline gelmesini nasıl sağlarız,Kodlarla bunu yapmam gerekiyor bir türlü bulamadım.. Yardımlarınız için şimdiden teşekkürler.
Mehmet Duran 14 Ağustos Cumartesi 2010 09:53 #2
Merhaba. Linq to Sql veya Entity alt yapıları veritabanındaki tablolara göre kod üreten araçlar. Burada sen buna müdahele edip, sonradan oluşturacağın tabloları eklemek istiyorsun. Bunun için dbml dosyalarına müdahele edip, üretilen kodlara uygun biçimde kendi kodlarını eklemelisin. Ancak bu yol çok riskli. Dbml dosyalarına dışardan müdahele edildiğinde hata alma olasılığın yüksek. Bunun yerine tabloları en başta belirleyip modelleri ona göre oluşturmak lazım veya tablo oluştukça modeli güncellemek gerekiyor.
Hasan chutchus 14 Ağustos Cumartesi 2010 16:46 #3
cvbınız için teşekkür ederim. Ben aslında koda müdahele etmek istemiyorum. şöyleki oluşucak tablolar aynı yapıda olucaklar sadece isimleri ve içindeki kayıtlar farklı olacak oluşturulan ilk baştaki DataClassContext.dbml sayesinde bundan örnekler oluşturularak program her çalıştığında mesela bütün tabloları temsil etmesini sağlayamazmıyım ?
Mehmet Duran 16 Ağustos Pazartesi 2010 15:38 #4
Dbml dosyalarında farklı tabloları tek bir sınıf ile temsil edemezsin. Her tablo başlı başına bir nesne olarak ifade edilir. Böyle birşey için Dbml değil de kendi oluşturacağın bir yapıyı kullanabilirsin.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Kimse sana senden iyi öğüt veremez.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009