2012-08-26 55 views
1

我正在使用SQL Server精简版4.0作为我的数据库和使用实体框架。我有一个DataGrid做一些计算(使用8列x 10行的测试数据,calcs每行执行一次,所以只有10次)。简单的实体查询使用SQL Server CE 4.0慢

如果我使用任何实体查询,calc方法明显变慢。当我删除它们时,结果是即时的(无法辨别时间延迟)。

考虑的这一行代码:

Account a = (from accounts in context.Account select accounts).FirstOrDefault(); 

而是这样做的,我是从context.Account抓起数据,并把它变成一个列表之前击中,做Calcs(计算)方法:

List<Account> accountsTable = context.Account.ToList(); 

然后用这个代替上面的代码行,除了它查询列表而不是实体外,代替上面的代码行:

Account a = (from accounts in accountsTable select accounts).FirstOrDefault(); 

使用List<Account>方法没有性能下降。

我知道使用该实体将查询数据库并创建一些开销 - 但使用本地数据库(即没有网络问题等)和10行数据,我会认为这是可以忽略的。

我看到这个帖子:SQL Server CE 4.0 Entity Framework, query runs realy slow (compared with SQL Server CE 3.5)但这不是问题在这里。

我必须错过简单的东西 - 如果任何人都可以启发我,我会非常感激。

回答

0

是否有使用以下时,性能增益:

using System.Linq; 
Account a = context.Account.FirstOrDefault(); 

我怀疑你的查询是先解决(到一个列表),然后传递到FirstOrDefault。我相信直接运行FirstOrDefault会导致您的代码在更少的记录中读取,从而获得更好的性能。

相关问题