2015-07-21 53 views
1

我在我的數據庫中有許多關係,我有一個簡單的c#項目,並使用EntityFramework連接到我的數據庫。 現在的表是:如何使用EntityFramework執行查詢,關係多到很多

[dbo].[PE_Attivita](
    [ID] [int] IDENTITY(1,1) NOT NULL, 
    [Descrizione] [nvarchar](500) NULL, 
    [IDAttivitaPare] [int] NULL, 
    [CodiceCategoria] [int] NULL, 
    [NomeAttivita] [nvarchar](100) NULL, 
    [NomeFileEseguibile] [nvarchar](100) NULL, 
    [isVisible] [bit] NULL 
) 
[dbo].[ANAG_OperatoriMedici](
    [CodicePersoneFisiche] [nvarchar](16) NOT NULL, 
    [Descrizione] [nvarchar](100) NULL 
) 
[dbo].[PE_AttivitaXMedico](
    [CodiceFiscaleOperatoreMedico] [nvarchar](16) NOT NULL, 
    [IDAttivita] [int] NOT NULL 
) 

現在我想執行一個查詢,以便從PE_AttivitaXMedico提取的所有數據。

如果我嘗試在工作區中搜索PE_AttivitaXMedico類,我無法搜索它。我嘗試寫這樣的代碼,但不工作:

activityForDoctors= from ad in db_data.PE_Attivita 
    select new ActivityDTO.activitysXDoctors 
    { 
     IdAttivita=ad.ID, 
     codiceFiscaleDottore=ad.ANAG_OperatoreMedico. 
    } 

因爲PE_Attivita的ANAG_OperatoreMedico是一個集合而不是一個對象,我該怎麼定呢?

編輯

這是我PE_Attivita模型

public partial class PE_Attivita 
    { 
     public PE_Attivita() 
     { 
      this.MONITOR_Dati_Attivita_Esecuzione = new HashSet<MONITOR_Dati_Attivita_Esecuzione>(); 
      this.PE_Schedulazione_Attivita = new HashSet<PE_Schedulazione_Attivita>(); 
      this.PE_Attivita1 = new HashSet<PE_Attivita>(); 
      this.PE_AttivitaXIndici = new HashSet<PE_AttivitaXIndici>(); 
      this.PE_AttivitaXParametri = new HashSet<PE_AttivitaXParametri>(); 
      this.ANAG_OperatoriMedici = new HashSet<ANAG_OperatoriMedici>(); 
     } 

     public int ID { get; set; } 
     public string Descrizione { get; set; } 
     public Nullable<int> IDAttivitaPare { get; set; } 
     public Nullable<int> CodiceCategoria { get; set; } 
     public int CreationUserID { get; set; } 
     public int LastChangeUserID { get; set; } 
     public System.DateTime CreationDate { get; set; } 
     public System.DateTime LastChangeDate { get; set; } 
     public int FileStateID { get; set; } 
     public string NomeAttivita { get; set; } 
     public string NomeFileEseguibile { get; set; } 
     public Nullable<bool> isVisible { get; set; } 

     public virtual ICollection<MONITOR_Dati_Attivita_Esecuzione> MONITOR_Dati_Attivita_Esecuzione { get; set; } 
     public virtual ICollection<PE_Schedulazione_Attivita> PE_Schedulazione_Attivita { get; set; } 
     public virtual ICollection<PE_Attivita> PE_Attivita1 { get; set; } 
     public virtual PE_Attivita PE_Attivita2 { get; set; } 
     public virtual PE_CategoriaAttivita PE_CategoriaAttivita { get; set; } 
     public virtual ICollection<PE_AttivitaXIndici> PE_AttivitaXIndici { get; set; } 
     public virtual ICollection<PE_AttivitaXParametri> PE_AttivitaXParametri { get; set; } 
     public virtual ICollection<ANAG_OperatoriMedici> ANAG_OperatoriMedici { get; set; } 
    } 

這是ANAG_OperatoriMedici模型

public partial class ANAG_OperatoriMedici 
    { 
     public ANAG_OperatoriMedici() 
     { 
      this.ANAG_OperatoriMediciXAssistiti = new HashSet<ANAG_OperatoriMediciXAssistiti>(); 
      this.PE_Schedulazione_Attivita = new HashSet<PE_Schedulazione_Attivita>(); 
      this.ANAG_Associazioni = new HashSet<ANAG_Associazioni>(); 
      this.PE_Attivita = new HashSet<PE_Attivita>(); 
     } 

     public string CodicePersoneFisiche { get; set; } 
     public string Descrizione { get; set; } 

     public virtual ANAG_PersoneFisiche ANAG_PersoneFisiche { get; set; } 
     public virtual ICollection<ANAG_OperatoriMediciXAssistiti> ANAG_OperatoriMediciXAssistiti { get; set; } 
     public virtual ICollection<PE_Schedulazione_Attivita> PE_Schedulazione_Attivita { get; set; } 
     public virtual ICollection<ANAG_Associazioni> ANAG_Associazioni { get; set; } 
     public virtual ICollection<PE_Attivita> PE_Attivita { get; set; } 
    } 

回答

0

很難解釋不類的問題,但如果你只想1從集合使用

codiceFiscaleDottore=ad.ANAG_OperatoreMedico.FirstOrDefault().CodiceFiscaleOperatoreMedico 

如果你想所有組合的SelectMany()就派上用場了:

activityForDoctors = from ad in db_data.PE_Attivita 
.SelectMany(c => c.ANAG_OperatoreMedico) 
select ad 

http://blogs.interknowlogy.com/2008/10/10/use-linqs-selectmany-method-to-flatten-collections/

+0

我用你的代碼,但我收到的重複數據。我想要所有組合IDAttivita,CodiceFiscale – bircastri

+0

發佈您的模型,而不是數據庫。 –

+0

我已編輯我的問題 – bircastri