Мне было интересно об этом некоторое время, поэтому я подумал, что стоит использовать мой первый пост, чтобы спросить об этом.
Представьте, что у меня есть обсуждение со связанным списком сообщений:
DiscussionCategory discussionCategory = _repository.GetDiscussionCategory(id);
discussionCategoryDiscussions - это список объектов обсуждения, которые в настоящее время не загружены.
То, что я хочу, - это возможность итерации в дискуссиях в разделе обсуждения и определение количества сообщений в каждом обсуждении без получения данных сообщения.
Когда я пробовал это, прежде чем мне пришлось загрузить Дискуссии и Сообщения, чтобы я мог сделать что-то вроде этого:
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
Я надеюсь, что моя проблема станет более ясной. Дайте мне знать, если вам нужны дополнительные детали кода.