LINQ-to-Objects - 不能按对象分组

LINQ-to-Objects - cannot group by Object

我将 efcore 2.2 升级到 5,但简单的分组方式不起作用,
数据已经在内存中了,看一下:

List<IGrouping<Categories, Businesses>> businessesByCategory = 
    location.Businesses
            .GroupBy(x => x.Category.Parent ?? x.Category)
            .ToList();

在 Ef Core 2.2 中它运行良好,业务按类别分组,现在它什么都不做。

如果我尝试按 id 分组,它会起作用:

List<IGrouping<int, Businesses>> businessesByCategory = location.Businesses
    .GroupBy(x => x.Category.ParentId ?? x.CategoryId)
   .ToList();

但我需要类别实体,这样我只能得到类别 ID。

此问题是由 EF Core 3.0 无跟踪查询行为重大更改引起的 - No-tracking queries no longer perform identity resolution。因此,具有相同 IdCategory 对象现在是不同的实例,因此 LINQ to Objects GroupBy 使用的默认相等比较器将它们视为不同的键,因此根本不分组.

EF Core 5.0 恢复了 2.x 行为 - No-tracking queries with identity resolution, but you must opt-in for it using the AsNoTrackingWithIdentityResolution method in place of AsNoTracking(). Or QueryTrackingBehavior.NoTrackingWithIdentityResolution if setting the default ChangeTracker.QueryTrackingBehavior.