c# - 增加检索的记录数会成倍增加 linq 查询持续时间

标签 c# .net entity-framework wcf-data-services

在使用 EF 5.0 和 WCF 数据服务测试我的数据访问例程时,我遇到了性能问题。我正在 WCF 数据服务操作中执行以下简单查询:

var addresses = (from address in context.Addresses select address).Take(500);
var addressList = addresses.ToList();

当我只取500条记录时,查询时间大约是300毫秒。取1000条记录,查询时间为4秒。取2000条记录查询时间为24秒。取6000条记录左右,查询时间360秒以上。

当我在Sql Server Management Studio中执行EF生成的sql语句时,6000条记录的查询本质上是瞬时的。

可以配置哪些设置来消除此性能问题?

最佳答案

这是只读操作(例如在网格中显示)还是您需要更新从数据库中检索的实体?

如果您不需要更新实体,那么您应该使用 .AsNoTracking()方法 - 这意味着 Entity Framework 不会尝试跟踪对实体的任何更改。尝试这样的事情:

var addressList = context.Addresses.AsNoTracking().Take(500).ToList();

推荐阅读:

Entity Framework and AsNoTracking

关于c# - 增加检索的记录数会成倍增加 linq 查询持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16310409/

相关文章:

c# - Try catch 在 Azure 服务器中不起作用

c# - 无法加载文件或程序集 'EntityFramework,版本 = 6.0.0.0,

c# - 在标签中自动包含版本号

c# - 公约问题: When do you use a Getter/Setter function rather than using a Property

c# - 设计面向对象和单元测试友好的查询系统

entity-framework - 如何在 Fluent EF 中进行一对一的单向建模?

c# - 如何检查密码是否有效? ASP.NET MVC 成员资格

c# - SqlConnection.Close() 在 using 语句中

c# - 通过 google S3 api 访问存储桶

c# - WPF 工具提示仅在文本为某物时显示