实体框架查询缓慢的小结果集

时间:2015-06-12 16:58:31

标签: c# sql entity-framework entity-framework-6

所以我有以下EF查询从平面表返回大约12,000条记录。我使用的投影只选择必要的字段(大约15个),然后将它们放入自定义类的列表中。这需要将近3秒,这对于12,000条记录来说似乎很长。我尝试用“读取未提交”来包装事务scrope中的整个事物,我也尝试使用“AsNoTracking()”。两者都没有任何区别。任何人都知道为什么这方面的表现会如此糟糕?

List<InfoModel> results = new List<InfoModel>();

        using (InfoData data = new InfoData())
        {
             results = (from S in data.InfoRecords
                        select new
                        {
                            ...bunch of entity fields...
                        }).AsEnumerable().Select(x => new InfoModel()
                        {
                            ...bunch of model fields...
                        }).ToList();
        }

1 个答案:

答案 0 :(得分:0)

很难回答,因为有大量的东西会影响你的网络,你的sqlserver或Windows服务器中的其他请求的数量,你的模型,......

尽管有最新版本,但生成的查询的质量和实体框架的性能已经提高了很多,在速度方面远远不是其他人。您可以查看一些性能注意事项https://msdn.microsoft.com/en-us/data/hh949853.aspx

它速度很快,3秒对你来说太多了,可能我不会使用Entity Framework来检索这么多行,对我来说,Entity Framework非常棒,只需要一些项目,但如果速度很重要则不是数千。

为了提高速度,您需要使用许多其他ORM,例如Dapper,Stackoverflow使用的pretty fast