Entitiy framework N-N ilişkili tabloda group by kullanımı

ulusalh (1) 6 yıl önce sordu

Merhaba arkadaşlar,

Veritabanı tablolarım şu şekilde;

 

 

Modul

----------

ID       ModulAdi

1         sistem

2         üretim

3         dağıtım

 

Danışman

-----------

ID       DanismanAdi          DanismanMail

1              Ali                              @mail

2             Ayşe                           @mail

3             Fatma                       @mail

 

N-N Bağlantılı DanışmanModul

------------------------------------------

ID        MODULID          DANISMANID

1            1                            1

2            2                             1

3           3                             1

 

N-N bağlantılı DanısmanModul  tablosundan yola çıkarak  danışmanın bağlı olduğu modüllerinin listesini ve danisman isimlerini elde etmek istiyorum. Hem danisman listesi hemde danismanin bağlı olduğu modül listesini nasıl elde edebilirim.

 

yardımlarınız için şimdiden teşekkür ederim.

 

 

 

 

 

 

 

Toplam 3 cevap


ahmetgnczl (1) 6 yıl önce cevapladı

Dostum bunları Foreign Keylerle bağladıysan eğer değin için geçerli olan tek şey DanışmanModul Tablosunu Select etmen yeterli örnek

var model = (from a in db.DanışmanModul  select a).To List();

foreach(var item in model)

{

item.Danışman.DanismanAdi

item.Modul.ModulAdi

}

Bu şekilde ilerliyebilirsin DİKKAT VERİTABANIN İLİŞKİSEL VERİ TABANI İSE

 

DEĞİLSE

bu işlemi join kullanarak aşabilirsin.

Join için göstermek istediğin datalar için bir custom class yapman gerek 

classDeneme{

public int ID {get;set;}

public string DanismanAd {get;set;}

public string ModulAd {get;set;}

}

var result =(from dm in DanışmanModul  
             join d in Danışman on dm.DanısmanID equals d.ID
             join m in Modul on dm.ModulID equals m.ID
             select new Deneme { ID = dm.ID, DanısmanAd = d.DanismanAdi,ModulAd= m.ModulAdi}).ToList();
alattin (17125) 6 yıl önce cevapladı

Code first ile geliştiriyorsan navigation property ile kolayca halledebilirsin.

Danışan Class

public class Danisman
    {
        public int DanismanId { get; set; }
        public string DanismanAd { get; set; }
        public virtual ICollection<DanismanModul> DanismanModuller { get; set; }
    }

Modul Class

 public class Modul
    {
        public int ModulId { get; set; }
        public string ModulAd { get; set; }
     
    }

DanismanModul Class

 public class DanismanModul
    {
        public int Id { get; set; }      
        public int DanismanId { get; set; }       
        public int ModulId { get; set; }

        public virtual Danisman Danisman { get; set; }
        public virtual Modul Modul { get; set; }
    }

Daha sonra danışman listesini moduller ile birlikte almak istersen:

db.Danismanlar.Include("DanismanModuller").ToList()

Demen yeterli olur. Daha sonra aşağıdaki gibi foreach ile dolanabilirsin.

<dl>


    @foreach (var d in Model)
    {
        <dt>@d.DanismanAd</dt>
        foreach(var m in d.DanismanModuller)
        {
            <dd>@m.Modul.ModulAd</dd>
        }
    }
</dl>

 

ulusalh (1) 6 yıl önce cevapladı

Cevabınız için teşekkür ederim. 

Code First değil EF designer ile geliştiriyorum.  Modul ile Danismanlar  N-N bağlantılı. (N-N bağlantının kurulduğu tablo DanismanModul ). 

Söylediğiniz yöntem ile List<Danismanlar> 'larda Include(x=>x.DanismanModuller) yaptığımda Razor'da @m.Modul.modulAdi kısmında hata alıyorum. Modul tablosunu Danismanlarda Include edemediğim için. 

DanismanModul tablosundan yola çıkarak hem danisman listesini hem de bağlı olduğu modüller listesini nasıl elde edebilirim?