У меня есть сущность "Идеи", у которой есть коллекция дочерних сущностей "ChildIdeas". Мне нужно загрузить список идей и количество «ChildIdeas» (только считать!).
Я могу сделать:
нетерпеливая загрузка
from i in _dataContext.Ideas.Include("ChildIdeas") ...
преимущества: все необходимые данные получены одним запросом;
Недостатки: загрузка ненужных данных. Мне нужен только счет ChildIdeas, а не полный список ChildIdeas
Явная загрузка
from i in _dataContext.Ideas ...
idea.ChildIdeas.Loading()
преимущества: нет;
недостатки: много запросов (ideas.count + 1) вместо одного, загрузка ненужных данных
Независимые запросы
from i in _dataContext.Ideas ...
_repository.GetCountChildIdeas(idea.ID);
преимущества: загружать только необходимые данные;
недостатки: много запросов (ideas.count + 1) вместо одного
все 3 типа имеют недостатки. Может быть, существует какой-либо способ загрузить только необходимые данные? Если да - что это, если нет - какой путь лучше для этого случая?
[ADDED]
после нагрузочного тестирования (для 1 пользователя) я получил Page Load (в секундах):
Стремительные детские идеи - 1,31 сек.
явные детские идеи - 1,19 сек
внешние запросы - 1,14 с
Итак, нетерпеливый способ для моего случая - худший ... Почему даже явный способ лучше?