使用EF 4缓存来自DB的数据

时间:2011-05-07 19:08:08

标签: c# .net entity-framework ado.net linq-to-entities

我有一个应用程序需要将数据保存在内存中。 有5-6个表,行数很少,表很少更新,因为应用程序非常频繁地需要这些数据,所以我希望避免在每次操作时都要求DB。 我正在使用实体框架4(linq到实体),它每次查询时都会发送请求。我知道可以避免使用ToList等...但我需要来自这6个表的信息并且查询应用连接。

什么是更好的解决方案。

2 个答案:

答案 0 :(得分:1)

要执行查询的目的。您可以检查EF Caching Wrapper是否解决了问题,但我不这么认为。缓存提供程序缓存实际查询,因此足以更改条件,并将其视为另一个查询。

这应该通过将数据加载到自定义数据结构(列表)并在其上使用Linq-to-objects来完成。

答案 1 :(得分:0)

如果您将该数据加入其他不适合缓存的数据,我建议您查看数据库引擎功能。大多数高级SQL数据库都会将这些表放在RAM中。在为非缓存数据发出查询时,您已经会遇到网络延迟开销。并且数据库已经在RAM中已经有一个索引。除非你在谈论像图像或类似的大行。您只需将一小部分处理从一个地方移动到另一个地方。另外,为了与SQL数据库一样高效,您不仅需要找到如何缓存,还要缓存索引并编写代码以便使用和维护它。

但是,在某些用例中,这将是非常有用的事情。