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

0

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.

 

 

 

 

 

 

 

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

    Toplam 3 Cevap


    0

    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();
    ahmetgnczl ahmetgnczl (1)
    6 yıl önce cevaplandı

      0

      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>

       

      alattin alattin (17125)
      6 yıl önce cevaplandı

        0

        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?

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

          üyelik gerektirir

          Cevap yazabilmek için üye girişi yapmalısınız.

          Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
          uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol