我使用 SQL Server Compact Edition 4.0 作为我的数据库并使用实体框架。我有一个 DataGrid 可以进行一些计算(使用 8 列 x 10 行的测试数据,每行执行一次计算,因此只执行 10 次)。
如果我使用任何实体查询,则 calc 方法会明显变慢。当我删除它们时,结果是即时的(无法辨别时间延迟)。
考虑这一行代码:
Account a = (from accounts in context.Account select accounts).FirstOrDefault();
我没有这样做,而是context.Account
在点击执行计算的方法之前从中获取数据并将其放入列表中:
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,查询运行速度非常慢(与 SQL Server CE 3.5 相比),但这不是这里的问题。
我一定错过了一些简单的东西 - 如果有人能启发我,我将非常感激。