linq to entities 查询结果遗漏子记录

linq to entities query result misses child records

我的工作 table 与我的 JobTag table 具有一对多关系。

特定工作的数据有很多 JobTag 记录。

但是此查询未填充 JobTag。

    var query = from j in context.job.AsNoTracking().Include(j => j.JobTag)
                            join i in context.MYEXTItem on j.ItemID equals i.ItemID
                            where j.HeadID == orderId && i.TemplateID == 50 
                            select new { Job = j, Item = i };
                var jobitems = query.ToArray();
                var job1 = jobitems[0];
                var num = job1.Job.JobTag.Count;  // is Zero why?

num returns 即使作业存在 JobTags 也为零。

我做错了什么?

你可以这样做

var details = from j in db.Jobs
                          join t in db.JobTags on j.Id equals t.JobId
                          select new
                          {
                              Job = j,
                              Tag = t,
                          };
            // if you want to get the list of jobs only
            var jobs = (from j in details
                        select j).Distinct();
            // if you want to get the counts
            var count = from d in details
                        group d by d.Job into g
                        select new
                        {
                            Job = g.Key,
                            TagCounts = g.Count()

                        };

希望对您有所帮助

参见

Include 获得投影后,你们都在更改查询的形状。并不是说这使它更明显。我认为这个 "lost Include problem" 非常违反直觉。

无论如何,我们必须忍受它。在您的情况下,您可以做类似...

select new { Job = j, Tags = j.JobTag, Item = i }

...或者如果您只对计数感兴趣...

select new { Job = j, TagsCount = j.JobTag.Count(), Item = i }

...并删除 Include.