Entity Framework - 使用简单查询时速度慢

Entity Framework - slow when using a simple query

我在entity framework中有一个简单的class如下:

public class Merchandising
{
    public int Id { get; set; }

    public int Index { get; set; }    

    public int CategoryId { get; set; }

    public int? CardId { get; set; }  
}

在数据库中,这大约有 1000 行,直接查询不到一秒钟,但是当我执行此语句时,它需要长达 55 秒才能 运行 - 我觉得这很奇怪。任何人都可以对此有所了解吗?

var mm = a.Merchandisings.ToList();    
var m = mm.Where(f => f.CategoryId == catId).ToList();

catId是一个整数值,mm需要几分之一秒的时间来执行。 mm 返回大约 1000 行,m 返回 40 行。 M 大约需要 55 秒来执行。

我假设虽然 CategoryIdCardId 都 link 到其他 class es(并且是大数据对象),但数据未加载,因为没有延迟加载。

我真的不明白为什么m要花这么长时间才能执行,我想这与对股权框架的一些知识缺乏有关。有人可以帮忙吗?

问题是当你在第一行调用 ToList 方法时,你会将所有元素带到内存中,所以先尝试过滤以避免加载不符合条件的不必要元素,然后调用 ToList 方法:

var m =  a.Merchandisings.Where(f => f.CategoryId == catId).ToList();