所以我有以下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();
}
答案 0 :(得分:0)
很难回答,因为有大量的东西会影响你的网络,你的sqlserver或Windows服务器中的其他请求的数量,你的模型,......
尽管有最新版本,但生成的查询的质量和实体框架的性能已经提高了很多,在速度方面远远不是其他人。您可以查看一些性能注意事项https://msdn.microsoft.com/en-us/data/hh949853.aspx
它速度很快,3秒对你来说太多了,可能我不会使用Entity Framework来检索这么多行,对我来说,Entity Framework非常棒,只需要一些项目,但如果速度很重要则不是数千。
为了提高速度,您需要使用许多其他ORM,例如Dapper,Stackoverflow使用的pretty fast。