Несколько запросов генерируются, когда весь элемент выбран с помощью efcore - PullRequest
0 голосов
/ 05 января 2019

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 не помогает из того, что я вижу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...