返回连接查询中的导航属性

时间:2014-08-11 13:27:36

标签: c# asp.net linq entity-framework linq-to-entities

在构建患者预约应用程序时,我需要返回具有导航属性patientDetails的患者,而返回的患者匹配的sessionId不是直接从患者推导出来的,而是来自一系列其他导航属性。这本身并不困难,就像可以使用纯SQL连接一样,只是我的导航属性patientDetails永远不会包含在内。

包含路径是正确的,以防有人问。

using (DbEntities db = new DbEntities())
{
    List<tblPatient> res = (from s in db.tblSessions
                            join b in db.tblBookings on s.id equals b.sessionId
                            join r in db.tblReferrals on b.referralId equals r.id
                            join a in db.tblAttendanceStatus on b.attendanceStatus equals a.id
                            join p in db.tblPatients.Include("tblPatientDetail") on r.patientId equals p.id
                            join pd in db.tblPatientDetails on p.patientDetailsId equals pd.id
                            where s.id == id
                            select p).ToList();

    return res;
}

我是否包含.include

似乎没有区别

我忽略了什么?

1 个答案:

答案 0 :(得分:1)

使用joingroup by时会忽略包含。您可以更改查询以使用where代替

List<tblPatient> res = (from p in db.tblPatients.Include("tblPatientDetail")
                        where 
                            (from s in db.tblSessions
                             join b in db.tblBookings on s.id equals b.sessionId
                             join r in db.tblReferrals on b.referralId equals r.id
                             join a in db.tblAttendanceStatus on b.attendanceStatus equals a.id
                             where r.patientId == p.id
                             where s.id == id
                             select 1).Any()
                         select p).ToList()