以下LINQ to Entities查询(使用EF 4.1 Code-First)应基于CampaignsUsers创建一个 View 模型列表。我已经急切地加载了每个广告系列的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();

要解决此问题,我更改了 View 模型定义,并设置了CategoryText属性,并将其填充到查询中:
Select(g => new CampaignViewModel { Campaign =  g.Key, MemberCount=g.Count(), CategoryText = g.Key.Category.Title})


我很想知道是什么阻止了类别的显式加载?

最佳答案

当您投影到新类型,使用Includejoin时,会忽略group by

关于c# - LINQ到实体Include()不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7532498/

10-15 06:54