【发布时间】:2012-04-04 10:52:46
【问题描述】:
我想通过 EntityFramework 4 通过 WCF 服务从 SQL Express 2008 R2 服务器返回相对大量的记录到 WCF 客户端。我的测试表目前包含大约 11.000 条记录。 LINQ 查询就这么简单:
Database DB = new Database(); // create object context
var retValue = DB.Entities.Persons
.Include("District")
.Include("District.City")
.Include("District.City.State")
.Include("Nationality")
return retValue.ToList();
这需要大约 10 秒才能完成。
在 SQL Server Managament Studio 中执行相同的 SELECT 查询不到 1 秒。
EF 一定要那么慢吗?
【问题讨论】:
-
这段代码运行时,除了 SQL Server 正在执行的查询之外,还会发生什么?
-
@AakashM 你是什么意思?这只是在那一刻发生的一个陈述。目前启用了 WCF 跟踪,但我怀疑它是否会增加这 9 秒。
-
对,我要求您考虑一下这段代码运行时实际发生的情况,除了 SQL Server 正在执行的查询。
-
@AakashM 刚试过不带WCF跟踪,时间上没有区别。
-
您是否使用 SQL Profiler 查看实际运行了多少 SQL 查询?我敢打赌,您会看到很多查询在您的数据库中触发。
标签: entity-framework linq sql-server-2008-r2 entity-framework-4