我有以下存储库:
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
来完成,我的实施是错误的吗?
答案 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吗?