LINQ to Entities Include () не работает - PullRequest
       1

LINQ to Entities Include () не работает

5 голосов
/ 23 сентября 2011

Следующий запрос 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})  

Но Мне интересно узнать, что помешало явной загрузке категорий?

1 Ответ

11 голосов
/ 23 сентября 2011

Include игнорируется, когда вы проецируете на новый тип, используете join или group by

...