使用存储库模式进行实体框架缓存

时间:2011-04-11 15:47:33

标签: .net caching frameworks entity

如果我想在使用存储库模式和实体框架时实现缓存,我不能只在Entity Framework之外做一些简单的逻辑来处理缓存吗?

E.g。

if(Cache[ProductsKey] != null)
{
    return ConvertToProducts(Cache[ProductsKey]);
}
else
{
    var products = repository.Products;
    Cache[ProductsKey] =  products;
    return products;
}

似乎很多人都过于复杂了。或者这样做会以某种方式限制?

2 个答案:

答案 0 :(得分:4)

最好兑现此处(存储库)的整个ObjectContext

使用Session_StartSession_End分别初始化和处置对象。

答案 1 :(得分:4)

我更喜欢我的存储库是干净的。如果需要,我更喜欢在我的服务层实施缓存

所以我 100%同意你的样本。您的存储库返回产品(通过运行查询),您可以在其他层中缓存

P.S。:我假设你在需要时开始你的对象上下文(会话开始)并在会话结束时处理它。