Entity framework core 。仅包含加载包含实体的第一个实例

Entity framework core 。仅包含加载包含实体的第一个实例,entity-framework-core,entity-framework-core-3.0,Entity Framework Core,Entity Framework Core 3.0,我正试图用它的信息加载奖励。我正在使用以下代码: var rewards = await ctx.RewardGroupRewards.Where(r => r.CampaignRewardGroup.Id == rewardGroupId) .Include(r => r.CampaignRewardGroup) .Include(r => r.CampaignRewardCategory)

我正试图用它的信息加载奖励。我正在使用以下代码:

var rewards = await ctx.RewardGroupRewards.Where(r => r.CampaignRewardGroup.Id == rewardGroupId)
                .Include(r => r.CampaignRewardGroup)
                .Include(r => r.CampaignRewardCategory)
                .Include(r => r.CostDenomination)
                .Include(r => r.Reward)
                .ToListAsync();

当我在调试器中检查结果时,列表中的第一项已正确加载,但列表中的第二项已加载了您创建新组时将获得的内容,即使其组Id设置正确(或者根本不会显示在结果中)。

以防这对任何人都有用,我找到了解决办法

我安装了EntityFrameworkCore.Proxies包并启用了延迟加载,如下所述()。这给映射非虚拟属性(尽管不是上面特定查询中使用的属性)带来了一些错误。一旦我修好了,一切都正常了


奇怪的是,它现在也可以与延迟加载一起工作,因此只需将代理引用添加到项目或确保所有导航属性都是虚拟的就足够了,但我还是要让LL保持打开状态,因为它对我的项目有意义。

但是在调试器之外,结果是否正常?否,它们不是——这是我第一次提醒检查的原因,然后我花了一段时间试图在调试器中检查之前确定这是否是json问题