Entity Framework Many to Many Relations

Entity Framework’te ilişkilerde one-to-many ve one-to-one ilişkileri duymuştuk. Peki many-to-many ilişkiler entity framework’te nasıl oluşturuluyor? Nasıl kullanılıyor?
Many-to-many ilişkiler insert update delete işlemlerinde ne gibi tepkiler veriyor? Bir bardak sıcak çay eşliğinde bu soruları tek tek cevaplayalım.
Veritabanında tablo oluşturulurken iki tablo arasında direk many-to-many ilişki diye bir kavram yoktur. Bir ara tablo sayesinde bu ilişki gerçekleşmektedir. Örneğin veritabanında ürünlerimizi bulundurduğumuz “Urun” tablomuz ve müşterilerimizi bulundurduğumuz “Musteri” tablomuz yer alsın. Müşterinin aldığı ürün kayıtlarını tutabilmek için Urun ile Musteri tabloları arasında hiçbir bağ yoktur. Araya bu iki tabloyu birleştirmek için “MusteriUrun” tablosunu yerleştirirsek bu bilgileri tutabiliriz. O zaman bu tablo yapısını oluşturalım, bakalım nasıl bir yapı olacak
Description: C:\Users\ugur\Desktop\Entity_Framework_Many_To_Many\Entity_Framework_Many_To_Many_2.jpg

 

 

Projemiz için SQL Server veritabanını kullanıyorum. Ürün ve Müşteri bilgilerinin ortak noktada toplantığı MusteriUrun tablosunda dikkat ederseniz 2 tane primary key yer almaktadır. Bunun sebebi bir müşteri bir üründen sadece 1 tane alabilsin mantığıyla mağazamızın çalışmasıdır (?).
Yeni bir Asp.Net Web Application oluşturalım. Oluşturduğumuz uygulamaya “MagazaModel” isminde bir Entity Data Model ekleyelim. Data modelimizde sadece bu üç tabloyu seçelim.
Seçim işlemlerini tamamladıktan sonra Bu 3 tablonun veritabanı diyagramında göründüğü gibi (yukarıda göründüğü gibi) görünmesini bekliyoruz. Ben de başta öyle beklemiştim fakat gördüğüm yapı çok farklı ve çok güzel bir ilişkiydi.
Description: C:\Users\ugur\Desktop\Entity_Framework_Many_To_Many\Entity_Framework_Many_To_Many_3.jpg
Entity Framework, Musteri tablomuz ile Urun tablomuz arasında many-to-many (*-*) ilişki kurmuş. İki tablonun Navigation Properties alanına dikkat ederseniz Urun’un altında Musteri, Musteri’nin altında Urun yer almaktadır. Bu da bizi ara tablodan (MusteriUrun) kurtarmaktadır. Yani müşterinin aldığı ürüne musteri.Urun ile, ürünü satın alan müşterilere de urun.Musteri diyerek erişebilmemizi sağlamaktadır.
Şimdi bunu bir örnek ile alalım.
Veritabanındaki Urun tablomuzun kayıtlarına göz atalım.
Description: C:\Users\ugur\Desktop\Entity_Framework_Many_To_Many\Entity_Framework_Many_To_Many_3.jpg
Musteri tablosunun kayıtlarına da göz atalım.
Description: C:\Users\ugur\Desktop\Entity_Framework_Many_To_Many\Entity_Framework_Many_To_Many_4.jpg
MusteriUrun tablosuna da bir bakmakta fayda var
Description: C:\Users\ugur\Desktop\Entity_Framework_Many_To_Many\Entity_Framework_Many_To_Many_5.jpg
Şimdi Test.aspx sayfamıza şu kodları yazıp 1 ID’li müşterinin (yani benim

Cevap Bırakın


*