Следующий запрос LINQ to Entities (с использованием EF 4.1 Code-First) должен создать список моделей представления на основе Campaigns
и Users
. У меня есть загруженное свойство Category
для каждой кампании, поэтому у каждой кампании должно быть свое ссылочное свойство Category
с соответствующими данными. Но похоже, что эта страстная загрузка где-то потеряна, поэтому я не могу получить доступ к таким категориям, как: campViewModels[0].Campaign.Category
. Это всегда ноль.
var campViewModels = ctx.Campaigns
.Include(c => c.Category)
.Where(c => c.Title.Contains(searchText)).Join(
ctx.Users,
c => c.CampaignId,
u => u.CampaignId,
(c, u) => new {c, u})
.GroupBy(cu => cu.c)
.Select(g => new CampaignViewModel { Campaign = g.Key, MemberCount=g.Count()})
.OrderByDescending(vm => vm.MemberCount)
.Skip(pageIndex)
.Take(pageSize)
.ToList();
Чтобы обойти эту проблему, я изменил свое определение viewmodel и получил свойство CategoryText
и заполнил его в своем запросе:
Select(g => new CampaignViewModel { Campaign = g.Key, MemberCount=g.Count(), CategoryText = g.Key.Category.Title})
Но
Мне интересно узнать, что помешало явной загрузке категорий?