LINQ to SQL Inner Join

by Alper KOCA 25. Nisan 2009 12:58

Geçende bir projem için SQL’de olan inner join yapısının LINQ’de nasıl yapılacağını araştırdım. Bağlamak istediğim tablolar aşağıdaki gibiydi.resim1

Senaryomda bir yazara ait birden fazla makalenin bulunabilmesiydi. ADO.NET ve SQL sorgularıyla önceden bunu çok rahat yapabileceğimi düşünürken LINQ’i öğrenince büyük bir eziyet çektiğimi anladım ve LINQ’de bu işi yapmaya karar verdim.

LINQ to SQL Class’ımı oluşturduktan sonra iki tabloyuda Server Explorer’dan sürükleyip oluşturduğum DataContext’e bıraktım.

resim2

Sonrada sayfamın arkasına aşağıdaki kodları yazdım.

resim3

İstediğimi yapmıştım ama aklıma takılan bazı noktalar vardı onları araştırmadan yapamadım ve join sözcüğünü kullanmadan da bunun yapılabileceğini buldum. Peki ya nasıl?

Oluşturduğum DataContext’in toolbox’ında resim4 diye bir özellik var onu kullanarak daha kolay yapabiliyorsunuz.

Seçtikten sonra Yazar tablosundan Makale tablosuna bir ok çiziyorsunuz. Sonrada karşınıza Association Editor paneli geliyor.

resim5

 

Association Properties bölümünden hangi alanlarımızı eşitlemek istiyorsak seçiyoruz ve OK butonuna basıyoruz.

resim7

Artık kod tarafımıza geçebiliriz. Kod olarakta aşağıdaki kodları yazdığımızda

 

resim8

gördüğünüz gibi intellisense’imizde tüm ilişkili tablolarımızın verileri geldi. Hiç join yazmadan bu işlemi yapabildik.

Başka yollarda vardır muhakkak ama ben bu son yolu çok sevdim ve bunu görünce de azım açık kalmıştı :D

hiç sorgu ve parametrelerle uğraşmadan direk tablo class’ımızı oluşturmak ne hoş dimi :)

Tags: , , , ,

LINQ

Yorumlar

07.07.2009 01:28:17 #

Alper KOCA,bu güzel bilgiyi bizlerler paylaştığın için teşekkürler.

özgür esgicioğlu Turkey

20.09.2009 00:50:47 #

association işleminin join le alakası nedir ? benim gördüğüm kadarı ile 2 tablo arasında primary key - foreign key ilişkisi kuruyorsun.bu pek join e alternatif bişey miş gibi gelmedi bana : ) onun bir aşağısında gösterdiğin kodda ise Makaleler tablosundaki yazarID ye ulaşıyorsun.bununda joinle alakası nedir ? join olması için makaleye karşılık yazar tablosundan bir kayıt göstermen gerekirdi ?

Tarık

20.09.2009 09:15:25 #

Tamam zaten yazaID ye ulaştığın zaman onu gösterebiliyor oluyorsun.

alper_koca Turkey

Yorum ekle




biuquote
  • Yorum
  • Canlı önizleme
Loading



Powered by BlogEngine.NET 1.6.1.0 - FunkyGrunge Theme by n3o Web Designers

 

Alper KOCA

Alper KOCA
Çukurova Üniversitesi Bilgisayar Mühendisi
3. Sınıf Öğrencisi
Microsoft Student Partner