【问题标题】:How to make Entity Framework cache some objects如何让实体框架缓存一些对象
【发布时间】:2010-11-11 23:19:41
【问题描述】:

我正在使用实体框架。

在我的数据库中存储了个人及其原籍国。当我加载一个人对象时,我不知道每个人的来源是什么。有没有办法缓存国家/地区列表,以免出现不必要的请求。

【问题讨论】:

  • 凹凸。在 5 年多的时间里,关于查找表缓存,EF 有什么变化吗?具体来说,EF 是否集成了一种方法来做到这一点?

标签: .net entity-framework entity


【解决方案1】:

我会先缓存该国家/地区列表,然后将适当的国家/地区分配给每个检索到的人。如果您决定同时缓存人员,则应使他们依赖于缓存的国家/地区,并在您对国家/地区列表进行任何更新时使他们无效。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 链接不再可用。我尝试在 MSDN 网站上搜索,但还没有成功
    【解决方案3】:

    正如 Luhmann 已经说过的,我的伙伴 Jarek 为实体框架提供了一个出色的示例缓存提供程序。他谈到了here

    但有时这种方法过于矫枉过正,我怀疑缓存国家/地区是不值得付出努力的一个很好的例子。实现某种临时缓存可能会更好。

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

    你需要的是一个克隆缓存,也就是说,当你从缓存中抓取一些东西时,它会克隆它们。

    我整理了一个提示,说明如何做到这一点Tip 14 - How to cache Entity Framework Reference Data

    希望对你有帮助

    亚历克斯·詹姆斯

    Microsoft 实体框架团队。

    【讨论】:

    • 从您编写该技巧到现在,是否有更直接的方法可以使用 EF 4.1 缓存引用数据?
    • 好提示 Alex,新版本的 EF 是否有更好的方法?
    • 链接不再可用。我尝试在 MSDN 网站上搜索,但还没有成功
    猜你喜欢
    • 2017-03-25
    • 2012-12-13
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多