使用外键的LINQ查询

时间:2016-03-24 07:03:32

标签: c# linq

仍然试图绕过列表和导航概念,而不是基本的SQL连接语言。我有一个稍微复杂的查询,需要大量的连接,尽管大部分信息都是可导航的表格(或者过去曾经存在过)。

解释查询的表格和方向。

在顶层有一个名为Company的表格,与Areas有一对多的关系。

Areas与名为Shifts的表格存在多对一关系。

另一个名为Events的表存储了ShiftID,我想到了EventShift之间的链接后,我可以向上导航关系链。

还有其他一些表开始加入,这使得纯lambda查询(在我目前的理解水平上)很难。

到目前为止,我的代码是

             var UserEvents = from e in _context.Events
                         join s in _context.Shifts on e.ShiftID equals s.SHFID
                         where e.UID == userID
                         select new UserEvents
                         {
                             EVTID = e.EVTID,
                             UID = e.UID,
                             ShiftID = e.ShiftID,
                             EVTDate = e.EVTDate,
                             Notes = e.Notes,
                             AreaID = s.Area.AreaID,
                             AreaDesc = s.Area.AreaDesc,
                             CPYDesc = s.Area.Company.CPYDesc,
                             StartTime = s.StartTime,
                             EndTime = s.EndTime,
                             RequiredResources = s.RequiredResources,
                             ShiftDesc = s.ShiftDesc,
                             ShiftDayOfWeek = s.ShiftDayOfWeek
                         };

正在给出的错误是Shifts不包含Areas的定义。在代码谈话中,Shifts.c​​s没有为Area声明的字段。虽然Area有一个public List<Shift> SHFID { get; set; }

此查询在LINQ PAD中正常工作,但在VS

中没有

任何帮助或澄清将不胜感激。

0 个答案:

没有答案