2016-10-23 39 views
1

我有3類:(人事,Chirurgien和操作)C#加入條款與關聯表

public class Personnel 
{ 
    [Key] 
    public int CodePersonel { get; set; } 
    public FullName NomComplet { get; set; } 
    public Adresse Adress { get; set; } 
    public int Age { get; set; } 

    public ICollection<Operation> Operation { get; set; } 

} 

Chirurgien

public class Chirurgien : Personnel 
{ 
    public int Nbre_anne_Exp { get; set; } 
    public int NoteXP { get; set; } 
} 

和操作:

public class Operation 
{ 
    public int OperationId { get; set; } 
    public DateTime DateDebut { get; set; } 
    public DateTime DateFin { get; set; } 
    public int Duree { get; set; } 
    public bool Etat { get; set; } 

    public string CIN { get; set; } 

    public ICollection<Personnel> Personel { get; set; } 

    public Patient Patients { get; set; } 

    public override string ToString() 
    { 
     return CIN; 
    } 
} 

,我也創建關聯表「Membre」

HasMany(p => p.Personel).WithMany(v => v.Operation).Map(m => { 
      m.ToTable("Membre"); 
       m.MapLeftKey("Operation"); 
       m.MapRightKey("Personel"); 
      }); 

我怎樣才能得到那些失敗的操作(操作行政法院= FALSE)Chirurgien名單?

我用這個代碼返回完整Chirurgien名單:

public ICollection<Chirurgien> NoobDoctors() 
    { 
     var req = from t in ut.getRepository<Chirurgien>().GetAll() 

        select t; 


     return req.ToList(); 
    } 

謝謝

+0

LINQ查詢是多餘的 - 只要使用'返回ut.getRepository ().GetAll()ToList();'。 – NetMage

回答

0

我怎樣才能得到那些失敗的操作(操作行政法院= FALSE)Chirurgien名單?

可以使用Operation導航屬性與Any過濾:

var result = from c in ut.getRepository<Chirurgien>().GetAll() 
      where c.Operation.Any(o => !o.Etat) 
      select c; 

既然你已經配置了一個隱含的結表many-to-many關係,EF將保持表(包括查詢連接)爲您服務。因爲沒有條件

+0

你好:我有這樣的例外,現在爭論空例外是在這條線處理: –

+0

其中c.Operation.Any(!O => o.Etat),我有一些在我的數據庫 –

+0

嗯失敗的操作(行政法院= FALSE)這是所有這些存儲庫模式的缺點 - 我們無法看到實際的代碼。那麼GetAll()是什麼?我假設'IQueryable '在這種情況下你不能得到NRE。難道是返回的IEnumerable''?然後,更改的類型或使用該返回'IQueryable'另一種方法(相應的'DbSet') –