Microsoft 对实体框架中的二级缓存有何建议?

Posted

技术标签:

【中文标题】Microsoft 对实体框架中的二级缓存有何建议?【英文标题】:What does Microsoft recommend for 2nd level Caching in Entity Framework? 【发布时间】:2012-08-13 13:47:12 【问题描述】:

我使用了 Jarek Kowalski 制作的“EF Provider Wrappers”。它工作正常,但我注意到“限制和免责声明”部分:

除了示例代码中包含的内容之外,这些提供程序尚未经过广泛测试,因此您应该自担风险使用它们。

与任何其他示例一样,Microsoft 不为其提供任何形式的支持,但如果您发现错误或有功能建议,请使用此博客的联系表并告诉我关于他们。

我有点困惑,微软真的希望开发人员在没有任何官方支持(或推荐)的情况下在生产网站上使用 EnityFramework 进行二级缓存吗?

【问题讨论】:

标题似乎有点咄咄逼人。与其继续“攻击”,不如考虑询问期望的目标,例如:EF 支持的二级缓存策略是什么? (第一印象会对回复和/或接近投票产生很大影响..) 【参考方案1】:

现在有一个可用于 EF 6.x 的二级缓存提供程序

Entity Framework 当前不支持缓存查询结果。示例 EF 缓存提供程序可用于 Entity Framework 版本 5 及更早版本,但由于提供程序模型的更改,此示例提供程序不适用于 Entity Framework 6 及更高版本。该项目通过为 Entity Framework 6.1 应用程序启用查询结果缓存来填补这一空白。

https://github.com/moozzyk/EFCache

并在其之上实现了 Redis 提供程序:

通过添加 Redis 支持来扩展 EFCache

我想使用 Redis 将 L2 缓存添加到 EF - 什么都没有 当时可用。

我在 CodePlex 上发现了 Pawel Kadluczka (moozzyk) 编写的 EFCache

https://github.com/silentbobbert/EFCache.Redis

【讨论】:

【参考方案2】:

Apache Ignite.NET 为实体框架提供分布式内存二级缓存:https://apacheignite-net.readme.io/docs/entity-framework-second-level-cache

【讨论】:

【参考方案3】:

没有官方的二级缓存支持。我什至不确定 EF Provider 包装器是否与 .NET 4.5 兼容。二级缓存 is in backlog 用于未来版本的 EF。

您也可以实现自己的解决方案,因为EF is fully open sourced。

顺便说一句。我见过几十个相当复杂的网站在生产中运行,没有任何缓存......

【讨论】:

感谢 Ladislav,Entity Framework 5 的 EF Provider 包装器中存在一些可以修复的小问题。 '给我们发一个补丁'。来自世界上最大的软件公司的绝妙方法。

以上是关于Microsoft 对实体框架中的二级缓存有何建议?的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate批量操作

实体框架与普通 ORM 有何不同?

JPA学习(JPA_二级缓存)

何时以及如何使用休眠二级缓存?

Hibernate二级缓存 --Hibernate框架

ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存