仍然试图绕过列表和导航概念,而不是基本的SQL连接语言。我有一个稍微复杂的查询,需要大量的连接,尽管大部分信息都是可导航的表格(或者过去曾经存在过)。
解释查询的表格和方向。
在顶层有一个名为Company
的表格,与Areas
有一对多的关系。
Areas
与名为Shifts
的表格存在多对一关系。
另一个名为Events
的表存储了ShiftID
,我想到了Event
和Shift
之间的链接后,我可以向上导航关系链。
还有其他一些表开始加入,这使得纯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.cs没有为Area声明的字段。虽然Area有一个public List<Shift> SHFID { get; set; }
此查询在LINQ PAD中正常工作,但在VS
中没有任何帮助或澄清将不胜感激。