LINQ to Entities Include()不起作用

Kam*_*yar 5 c# linq linq-to-entities entity-framework entity-framework-4.1

以下LINQ to Entities查询(使用EF 4.1 Code-First),应该基于Campaigns和创建一个viewmodel列表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();  
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我更改了我的viewmodel定义并拥有CategoryText属性并在我的查询中填充它:

Select(g => new CampaignViewModel { Campaign =  g.Key, MemberCount=g.Count(), CategoryText = g.Key.Category.Title})  
Run Code Online (Sandbox Code Playgroud)

但我很想知道阻止明确加载类别的原因是什么?

Adu*_*cci 11

Include当您投影到新类型,使用a join或a时,将忽略此项group by