我的数据库由5个表组成,总共有大约10000行。在共享文件夹上的SQL Server CE中,它需要~1Mb。数据库本身是国家-地区-城市-街道-建筑物的分层结构。我使用的是实体框架4。
由于数据库很小,用户可以在WPF ListView中浏览和编辑所有2000个城市。但是,到目前为止,我尝试过的每种方法的GUI都很慢(因为需要多次数据库往返,使用虚拟数据的GUI速度很快)。如何通过一次或几次数据库往返将整个数据库加载到内存中?
我尝试了多个Include(),但我注意到as described here的性能损失很大
我应该轻量ORM- write my own吗?我也可以使用普通的ascii CSV文件来代替数据库,但它显然会排除并发性。
发布于 2011-02-09 02:02:52
我在Microsoft forum上重新问了这个问题,他们好心地给了我一些指导:
基本上,我的问题可以重申如下:
对于普通的EF,这是不可能的,因为每个查询都会进入数据库。这意味着我必须在启动时读取fast的数据,然后对其执行。
实现详情:
最好的方法似乎是使用ESQL快速导入数据,然后对其进行缓存,例如使用entities not connected to context。从我的第一次实验来看,它似乎工作得很好。
发布于 2011-02-01 04:28:27
老实说,我自己也做过这样的事情,对我来说,答案是将整个数据库复制到本地并对其进行处理。
如果您不仅想要读,而且还想写,我绝对建议您抛弃CE,安装Sql Server的Express版本之一。它们是为这种情况设计的;CE不是*。
*SP1更适合于并发访问,但网络上的性能永远不会适用于大型数据集。
https://stackoverflow.com/questions/4855700
复制相似问题