Почему ef core 2.1 генерирует множественный выбор для включения - PullRequest
0 голосов
/ 27 июня 2018

У меня есть команда ef:

var project = await _context.Set<Project>().Include(p => p.Controllers).FirstOrDefaultAsync(p => p.Id == pid);

и в процессе выполнения генерирует два select в виде sql:

SELECT TOP(1) [p].[Id], [p].[AppKey], [p].[CreateDate], [p].[Name], [p].[Title]
FROM [Project] AS [p]
WHERE [p].[Id] = @__pid_0
ORDER BY [p].[Id]

SELECT [p.Controllers].[Id], [p.Controllers].[CommandTimeout], [p.Controllers].[ContentType], [p.Controllers].[CreateDate], [p.Controllers].[IsActive], [p.Controllers].[IsJsonSerialize], [p.Controllers].[IsTested], [p.Controllers].[Method], [p.Controllers].[Name], [p.Controllers].[ProjectId], [p.Controllers].[Query], [p.Controllers].[Title]
FROM [Controller] AS [p.Controllers]
INNER JOIN (
    SELECT TOP(1) [p0].[Id]
    FROM [Project] AS [p0]
    WHERE [p0].[Id] = @__pid_0
    ORDER BY [p0].[Id]
) AS [t] ON [p.Controllers].[ProjectId] = [t].[Id]
ORDER BY [t].[Id]

Вопрос в том, почему генерируются две независимые команды sql, а первую можно пропустить? есть ли причина этого? для меня это похоже на ошибку!

...