Поскольку первый запрос выполняется здесь:
obj.Children. ...
И второй запрос здесь оправдывается:
... .SingleOrDefault()
Вы получаете первый запрос для полной сущности со всеми столбцами, поскольку свойство навигации загружается из-за отложенная загрузка . После загрузки объекта ваш Select
будет применен в памяти. На этом этапе запрос к базе данных уже завершен, когда вы проецируете на одно свойство.
Второй запрос действительно выполняет проекцию (выбирая один столбец) в базе данных и не загружает больше, чем этот столбец.