如何使用EntityFramework执行查询,关系多到很多
问题描述:
我在我的数据库中有许多关系,我有一个简单的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; }
}
答
很难解释不类的问题,但如果你只想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/
我用你的代码,但我收到的重复数据。我想要所有组合IDAttivita,CodiceFiscale – bircastri
发布您的模型,而不是数据库。 –
我已编辑我的问题 – bircastri