如何用EF加载整个数据库

时间:2011-01-31 20:24:28

标签: database entity-framework entity-framework-4 eager-loading

我的数据库由5个表组成,总共有~10000行。在共享文件夹上的SQL Server CE中需要大约1Mb。数据库本身是分层的国家 - 地区 - 城市 - 街道建设。我正在使用Entity Framework 4。

由于数据库很小,用户可以在WPF ListView中浏览和编辑所有2000个城市。但是到目前为止我尝试的每种方法都是GUI缓慢的(因为许多数据库往返,虚拟数据GUI是快速的)。如何通过一次或几次数据库往返将整个数据库加载到内存中?

我尝试了多个Include(),但我注意到性能损失很大as described here

我应write my own点亮ORM吗?我也可以使用普通的ascii CSV文件而不是数据库,但它显然会排除并发性。

2 个答案:

答案 0 :(得分:2)

老实说,我自己做过这样的事情,我的答案是在本地复制整个数据库并对其进行处理。

如果你不仅要阅读而且还要写,我肯定建议放弃CE并安装一个Express版本的Sql Server。它们是针对这种情况而设计的; CE不是*。

* SP1更适合并发访问,但通过网络永远不会对大型数据集有效。

答案 1 :(得分:0)

我在Microsoft forum上重新问了这个问题,他们很乐意给我一些指导:

基本上我的问题可以重申如下:

  • 在应用程序启动时从数据库中只读取一次
  • 从本地数据执行所有后续查询,而不是数据库(用于执行)
  • 每次添加或删除实体时都写入上下文和数据库。

使用普通EF无法实现,因为每个查询都会进入数据库。这意味着我必须在开始时读取数据快速,然后缓存

实施细节:

最好的方法似乎是使用ESQL快速导入数据然后缓存它,例如使用entities not connected to context。从我的第一次实验看,它似乎运作良好。

相关问题