【发布时间】:2010-11-11 23:19:41
【问题描述】:
我正在使用实体框架。
在我的数据库中存储了个人及其原籍国。当我加载一个人对象时,我不知道每个人的来源是什么。有没有办法缓存国家/地区列表,以免出现不必要的请求。
【问题讨论】:
-
凹凸。在 5 年多的时间里,关于查找表缓存,EF 有什么变化吗?具体来说,EF 是否集成了一种方法来做到这一点?
标签: .net entity-framework entity
我正在使用实体框架。
在我的数据库中存储了个人及其原籍国。当我加载一个人对象时,我不知道每个人的来源是什么。有没有办法缓存国家/地区列表,以免出现不必要的请求。
【问题讨论】:
标签: .net entity-framework entity
我会先缓存该国家/地区列表,然后将适当的国家/地区分配给每个检索到的人。如果您决定同时缓存人员,则应使他们依赖于缓存的国家/地区,并在您对国家/地区列表进行任何更新时使他们无效。
【讨论】:
你可以看看 Jaroslaw Kowalski 的优秀 tracing and caching provider wrappers for Entity Framework。
【讨论】:
正如 Luhmann 已经说过的,我的伙伴 Jarek 为实体框架提供了一个出色的示例缓存提供程序。他谈到了here。
但有时这种方法过于矫枉过正,我怀疑缓存国家/地区是不值得付出努力的一个很好的例子。实现某种临时缓存可能会更好。
如果您尝试这样做,您将遇到的主要问题是实例实体框架实体一次只能附加到一个 ObjectContext,这意味着如果您收到并发请求(例如在网站中),您将问题是你只是从缓存中抓取物品并盲目使用它们。
你需要的是一个克隆缓存,也就是说,当你从缓存中抓取一些东西时,它会克隆它们。
我整理了一个提示,说明如何做到这一点Tip 14 - How to cache Entity Framework Reference Data
希望对你有帮助
亚历克斯·詹姆斯
Microsoft 实体框架团队。
【讨论】: