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
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();
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>
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?