【问题标题】:Caching an EF entity in ASP.NET cache在 ASP.NET 缓存中缓存 EF 实体
【发布时间】:2011-10-04 21:57:53
【问题描述】:

我有一个带有 EF4.1 和存储库/工作单元模式的 MVC3 站点,并为每个 http 请求创建一个新上下文。

我想在 Entity Framework 4.1 中实现自定义对象缓存。这意味着将对象添加到 asp.net 缓存中,以便其他类似的 http 请求更快地检索。

但 EF 的问题在于,这些缓存的实体被附加到最初用于检索该实体的上下文中,并在该 http 请求结束后被释放。

现在,当我想更新这个缓存的对象时,它给了我“一个实体对象不能被多个 IEntityChangeTracker 实例引用”,这是完全有道理的。

在 MVC3/EF4.1 中实现对象缓存的最佳做法是什么?

我猜你必须在添加到缓存时从旧上下文中分离实体,并在检索时附加到新上下文。但我肯定不是第一个遇到这个或尝试实现这个的人!

那里有任何帮助程序或库吗? (请不要将我指向http://code.msdn.microsoft.com/EFProviderWrappers/Release/ProjectReleases.aspx?ReleaseId=4747,因为这会在对表的任何更新时从缓存中删除所有条目,证明自己无用)。

谢谢。

【问题讨论】:

    标签: c# asp.net-mvc-3 entity-framework entity-framework-4 entity-framework-4.1


    【解决方案1】:

    “最佳实践”可能是使用特殊的 DTO 类来存储会话,并在您需要在数据库中保存或加载信息时映射到该类。

    但是,您应该能够像您说的那样通过分离和附加实体来实现您的目标。如果您将在会话中添加和删除它的逻辑整合到一个类中,这应该不会那么困难。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-07
      • 2011-06-20
      • 2011-08-15
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 2010-12-26
      相关资源
      最近更新 更多