我们首先在Windows Azure上使用EF代码和App Fabric缓存(尽管我认为这个问题实际上更通用,因为我们将它用作ASP.net缓存提供程序)。有没有一种简单的方法来启用DBset对象的缓存?我们的数据库很小并且不经常更新,所以理想情况下我们可以将整个数据库缓存在内存中,并使用一些ttl到期来刷新对象集。任何有使用EF代码经验缓存的人的建议都会很棒。
答案 0 :(得分:3)
Don't do that。如果要缓存数据,请将它们提取为单独的列表并单独缓存。缓存DbSet
意味着缓存DbContext
,我将在Entity框架中将其提升为anity-pattern。身份图和工作单元的问题在链接的答案中描述。另一个问题是没有真正的刷新。如果您确实想要刷新数据,则必须处理上下文并创建一个新上下文。上下文也不是线程安全的,因此在多个请求之间共享它可能会导致意外结果。
答案 1 :(得分:0)
也许您可以使用此解决方案,但我从未在Azure中使用过它: