如何使Entity Framework缓存一些对象

时间:2009-07-18 14:30:47

标签: .net entity-framework entity

我正在使用实体框架。

在我的数据库中存储了人员和他们的国家。当我加载一个人物时,我不知道每个人的起源是什么。有没有办法缓存国家/地区列表,以便不会有不必要的请求。

3 个答案:

答案 0 :(得分:39)

由于Luhmann已经说过我的伙伴Jarek有一个优秀的实体框架示例缓存提供程序。他谈到的是here

然而,有时这种做法有点过分,我怀疑缓存国家是一个很好的例子,其中的努力是不值得的。实现某种特殊缓存可能更好。

如果您尝试这样做,您将遇到的主要问题是实例实体框架实体一次只能附加到一个ObjectContext,这意味着如果您获得并发请求(如在网站中),您将有问题的是你只是从缓存中获取项目并盲目使用它们。

你需要的是一个克隆缓存,即当你从缓存中获取某些内容时它会克隆它们。

我整理了一个说明如何执行此操作的提示Tip 14 - How to cache Entity Framework Reference Data

希望这有帮助

亚历克斯詹姆斯

实体框架小组Microsoft。

答案 1 :(得分:8)

你可以看看Jaroslaw Kowalski的优秀tracing and caching provider wrappers for Entity Framework

答案 2 :(得分:0)

我会首先缓存该国家/地区列表,并为每个检索到的人分配相应的国家/地区。如果您决定也缓存人员,则应该让他们依赖缓存的国家/地区,并在对国家/国家/地区列表进行任何更新时使其无效。