3

在使用 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条记录查询基本上是瞬间完成的。

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

4

1 回答 1

1

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

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

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

推荐阅读:

实体框架和 AsNoTracking

于 2013-05-01T10:28:49.497 回答