我正在使用带有实体框架的.NET Core 2.0 MVC,并且正在尝试将SQL语句转换为EF查询。这是原始的SQL:
% pod update
最后一个LEFT OUTER JOIN是我的问题。我还没有找到运行良好的解决方案。到目前为止,这是我提出的EF语句:
SELECT
t.LastName, FirstName, t.teacherId
,courseCode
,classSection
,roomId
,number
,DayID
,periodId
FROM Classes cl
INNER JOIN Courses cr on cr.courseId = cl.courseId
INNER JOIN vwClassSchedule cs on cs.ClassId = cl.classId
LEFT OUTER JOIN Teachers t on t.TeacherID = cl.teacherId
LEFT OUTER JOIN(select classid, count(classid) as number
from CourseEnrollment group by classId) ce on cl.classId = ce.classId
order by LastName, dayId, periodId
我想出的唯一可行的解决方案是循环浏览“课程”结果并计算每个结果的“学生”数,这是一个巨大的性能杀手。原始SQL在不到一秒的时间内运行,而我的第二个循环花费了将近30秒。必须有更好的方法。