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.
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.

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

İ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
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.

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

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

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 :)