【问题标题】:Return navigation property within join query在联接查询中返回导航属性
【发布时间】:2014-10-04 08:24:17
【问题描述】:

在构建患者预约应用程序时,我需要返回具有导航属性 patientDetails 的患者,而返回的与 sessionId 匹配,该 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 似乎没有区别。

我忽略了什么?

【问题讨论】:

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


    【解决方案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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      相关资源
      最近更新 更多