如何强制刷新可能的缓存值?

时间:2010-03-26 16:16:31

标签: asp.net-mvc database caching collections

我有以下存储库:

Public Class PageRepository
    Private Shared _pages As BLL.PageCollection

    Shared Function AllPages() As BLL.PageCollection
        If _pages Is Nothing Then _pages = new BLL.PageCollection(LOADALL)
        Return _pages
    End Function
End Class

我使用PageRepository.AllPages上的LINQ做所有选择,我还使用Repository.AllPages.AddNew()在集合中添加新实体。

当我调用Repository.AllPages.Save()数据存储在数据库中时,会保留_pages私有共享变量。

每次页面更新时,我是否应以某种方式强制刷新此变量?或者这应该通过Module / Static class来完成,我的实施是错误的吗?

1 个答案:

答案 0 :(得分:1)

执行保存时,您将使缓存无效。您应该在此时强制刷新或以某种方式使缓存到达任何使用者。这取决于它的消耗方式以及您如何设计您的架构。

您确定实际需要缓存吗? SQL Server(和其他DB)具有良好的缓存功能,LINQ to SQL和Entity Framework的LINQ dataContext具有可以使用的其他功能。简而言之,您是否尝试过使用

Public Class PageRepository

    Shared Function AllPages() As BLL.PageCollection
        Return new BLL.PageCollection(LOADALL)
    End Function

End Class

如果你有并且你确实需要缓存,你可以将缓存推送到BLL吗?