Как считать связанные объекты, не выбирая их в Entity Framework

Я уже давно об этом задумываюсь, поэтому я подумал, что стоило бы использовать мой первый пост с переполнением стека, чтобы спросить об этом.

Представьте, что у меня есть обсуждение со связанным списком сообщений:

DiscussionCategory discussionCategory = _repository.GetDiscussionCategory(id);

обсуждениеКатегория. Дискуссия - это список объектов обсуждения, который в данный момент не загружен.

То, что я хочу, - это иметь возможность перебирать обсуждения в разделе Обсуждение и говорить, сколько сообщений в каждом обсуждении, не выбирая данные сообщения.

Когда я попробовал это раньше, мне пришлось загрузить Обсуждения и Сообщения, чтобы я мог сделать что-то вроде этого:

discussionCategory.Discussions.Attach(Model.Discussions.CreateSourceQuery().Include("Messages").AsEnumerable());

foreach(Discussion discussion in discussionCategory.Discussions)
{

int messageCount = discussion.Messages.Count;

Console.WriteLine(messageCount);

}

Это кажется мне довольно неэффективным, поскольку я извлекаю из базы данных потенциально сотни тел сообщений и храню их в памяти, когда все, что я хочу сделать, - это подсчитать их количество для презентационных целей.

Я видел некоторые вопросы, которые касаются этой темы, но они, кажется, не обращались к ней напрямую.

Заранее благодарим вас за любые мысли на эту тему.

Обновление - еще немного кода по запросу:

public ActionResult Details(int id)
    {  
        Project project = _repository.GetProject(id);
        return View(project);
    }

Затем в представлении (просто чтобы проверить это):

Model.Discussions.Load();
var items = from d in Model.Discussions select new { Id = d.Id, Name = d.Name, MessageCount = d.Messages.Count() };

foreach (var item in items) {
//etc

Надеюсь, это прояснит мою проблему. Дайте мне знать, если вам нужно больше деталей кода.

Ответы на вопрос(6)

Ваш ответ на вопрос