SQL LEFT OUTER JOIN COUNT()GROUPBY转换为实体框架

时间:2018-10-17 15:23:39

标签: c# sql entity-framework entity-framework-core

我正在使用带有实体框架的.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秒。必须有更好的方法。

0 个答案:

没有答案