EF создает несколько запросов (n + 1) вместо одного запроса с подзапросом, когда выборка содержит весь элемент, а не только его часть.
Настройка проекта согласно https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/new-db?tabs=visual-studio
context.Blogs.Select(a => new { a.Url, a.Posts.Count }).ToList();
запускает это
SELECT [a].[Url], (
SELECT COUNT(*)
FROM [Posts] AS [p]
WHERE [a].[BlogId] = [p].[BlogId]
) AS [Count]
FROM [Blogs] AS [a]
Но
context.Blogs.Select(a => new { a, a.Posts.Count }).ToList();
запускает это
SELECT [a].[BlogId], [a].[Url]
FROM [Blogs] AS [a];
exec sp_executesql N'SELECT COUNT(*)
FROM [Posts] AS [p0]
WHERE @_outer_BlogId = [p0].[BlogId]',N'@_outer_BlogId int',@_outer_BlogId=2
Как я могу переделать linq, чтобы выбрать весь объект Blog без генерации нескольких запросов? Использование include не помогает из того, что я вижу.