我的数据库由5个表组成,总共有~10000行。在共享文件夹上的SQL Server CE中需要大约1Mb。数据库本身是分层的国家 - 地区 - 城市 - 街道建设。我正在使用Entity Framework 4。
由于数据库很小,用户可以在WPF ListView中浏览和编辑所有2000个城市。但是到目前为止我尝试的每种方法都是GUI缓慢的(因为许多数据库往返,虚拟数据GUI是快速的)。如何通过一次或几次数据库往返将整个数据库加载到内存中?
我尝试了多个Include()
,但我注意到性能损失很大as described here
我应write my own点亮ORM吗?我也可以使用普通的ascii CSV文件而不是数据库,但它显然会排除并发性。
答案 0 :(得分:2)
老实说,我自己做过这样的事情,我的答案是在本地复制整个数据库并对其进行处理。
如果你不仅要阅读而且还要写,我肯定建议放弃CE并安装一个Express版本的Sql Server。它们是针对这种情况而设计的; CE不是*。
* SP1更适合并发访问,但通过网络永远不会对大型数据集有效。
答案 1 :(得分:0)
我在Microsoft forum上重新问了这个问题,他们很乐意给我一些指导:
基本上我的问题可以重申如下:
使用普通EF无法实现,因为每个查询都会进入数据库。这意味着我必须在开始时读取数据快速,然后缓存。
实施细节:
最好的方法似乎是使用ESQL快速导入数据然后缓存它,例如使用entities not connected to context。从我的第一次实验看,它似乎运作良好。