是否有一种简单的方法可以在Entity Framework 4.1 Code First中使用ASP.NET缓存?

时间:2011-05-11 00:33:20

标签: entity-framework caching asp.net-mvc-3 ef-code-first entity-framework-4.1

我们首先在Windows Azure上使用EF代码和App Fabric缓存(尽管我认为这个问题实际上更通用,因为我们将它用作ASP.net缓存提供程序)。有没有一种简单的方法来启用DBset对象的缓存?我们的数据库很小并且不经常更新,所以理想情况下我们可以将整个数据库缓存在内存中,并使用一些ttl到期来刷新对象集。任何有使用EF代码经验缓存的人的建议都会很棒。

2 个答案:

答案 0 :(得分:3)

Don't do that。如果要缓存数据,请将它们提取为单独的列表并单独缓存。缓存DbSet意味着缓存DbContext,我将在Entity框架中将其提升为anity-pattern。身份图和工作单元的问题在链接的答案中描述。另一个问题是没有真正的刷新。如果您确实想要刷新数据,则必须处理上下文并创建一个新上下文。上下文也不是线程安全的,因此在多个请求之间共享它可能会导致意外结果。

答案 1 :(得分:0)

也许您可以使用此解决方案,但我从未在Azure中使用过它:

EF Caching Provider