使用Include分组时产生错误的查询

时间:2018-06-27 03:53:56

标签: c# group-by .net-core ef-core-2.0

我刚刚将我的EF Core更新到2.1.1,以获取Group By,它适用于像这样的简单查询:

var response = _dbContext.Capacities
    .GroupBy(g => g.AgencyId)
    .Select(g => new { g.Key, Sum = g.Sum(c => c.DefaultCapacity) })
    .ToList();

这将生成此SQL:

SELECT [g].[AgencyId]             AS [Key],
       SUM([g].[DefaultCapacity]) AS [Sum]
FROM   [Capacity] AS [g]
GROUP  BY [g].[AgencyId]

那太完美了。但是,当我尝试包含一个表进行内部联接时:

var response = _dbContext.Capacities
    .Include(c => c.Agency)
    .GroupBy(g => g.AgencyId)
    .Select(g => new { g.Key, Sum = g.Sum(c => c.DefaultCapacity), Name = g.Max(c => c.Agency.AgencyName) })
    .ToList();

它丢失并生成此查询:

SELECT [c].[CapacityId],
       [c].[AgencyId],
       [c].[CreatedBy],
       [c].[CreatedOn],
       ...
       [c.Agency].[AgencyId],
       [c.Agency].[ABN],
       [c.Agency].[ActiveFlag],
       ...
FROM   [Capacity] AS [c]
       INNER JOIN [Agency] AS [c.Agency]
         ON [c].[AgencyId] = [c.Agency].[AgencyId]
ORDER  BY [c].[AgencyId]

我是在做错什么还是分组依据在EF Core中仍然无法正确翻译?

0 个答案:

没有答案