В попытке устранить проблему, я заметил, что если я делаю LINQ to Entities
запрос:Почему ading OrderByDescending добавляет подзапрос в LINQ to Entities?
var timeRecords = db.Timesheets
.Where(timesheet => timesheet.TimesheetHeaderID == headerID);
я получаю запрос, как это:
SELECT
[Extent1].[ID] AS [ID],
[Extent1].[TimesheetHeaderID] AS [TimesheetHeaderID],
[Extent1].[StartDateTime] AS [StartDateTime],
[Extent1].[EndDateTime] AS [EndDateTime],
[Extent1].[ProjectCode] AS [ProjectCode],
[Extent1].[TaskCode] AS [TaskCode],
[Extent1].[WorkDescription] AS [WorkDescription]
FROM [dbo].[Timesheet] AS [Extent1]
WHERE [Extent1].[TimesheetHeaderID] = @p__linq__0
но если добавить OrderByDescending()
так:
var timeRecords = db.Timesheets
.Where(timesheet => timesheet.TimesheetHeaderID == headerID)
.OrderByDescending(timesheet => timesheet.StartDateTime);
Я получаю запрос с подзапросом:
SELECT
[Project1].[ID] AS [ID],
[Project1].[TimesheetHeaderID] AS [TimesheetHeaderID],
[Project1].[StartDateTime] AS [StartDateTime],
[Project1].[EndDateTime] AS [EndDateTime],
[Project1].[ProjectCode] AS [ProjectCode],
[Project1].[TaskCode] AS [TaskCode],
[Project1].[WorkDescription] AS [WorkDescription]
FROM (SELECT
[Extent1].[ID] AS [ID],
[Extent1].[TimesheetHeaderID] AS [TimesheetHeaderID],
[Extent1].[StartDateTime] AS [StartDateTime],
[Extent1].[EndDateTime] AS [EndDateTime],
[Extent1].[ProjectCode] AS [ProjectCode],
[Extent1].[TaskCode] AS [TaskCode],
[Extent1].[WorkDescription] AS [WorkDescription]
FROM [dbo].[Timesheet] AS [Extent1]
WHERE [Extent1].[TimesheetHeaderID] = @p__linq__0
) AS [Project1]
ORDER BY [Project1].[StartDateTime] DESC
Какая точка подзапроса?
Вы избили меня до этого. Я собирался сказать что-то в этих строках. Мы должны угадать, хотя. Вероятно, это способ сохраняйте вещи простыми для генератора запросов, в то время как не возникает слишком много проблем для оптимизатора запросов db. –