我刚刚将我的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中仍然无法正确翻译?