自定义缓存应用程序块中的一个缓存过期依赖项

一、在添加一个缓存项时,允许指定一个过期策略,这个过期策略对象要实现ICacheItemExpiration接口,常见的过期策略有:

 

绝对过期时间 AbsoluteTime

表达式表示的时间过期策略:ExtendedFormatTime

程序运行中一直不会过期NeverExpired

每次读取之后,再延长指定的时间后才会过期:SlidingTime

文件依赖:FileDependency

 

二、自己实现一个,缓存项依赖:CacheItemDependency

 

参考FileDependency的实现,缓存项的过期与否取决于文件是否发生了变化,我们自己实现一个过期策略,就是缓存项的过期与否取决于另一个NeverExpired的缓存项是否发生了变化。

代码如下:

 

Code

 

三、使用方法

1、更新缓存所依赖的缓存项。代码如下:

 

Code

 

2、每次更新数据库中的表时,调用UpdateCacheDependency方法。

在上述代码中cacheKey可以用数据库中标的名称。

还有一个问题就是 每次更新数据库中的表时,都要调用UpdateCacheDependency方法,是不是很烦,这也是没有办法的,必须调用,否则 依赖于 以cacheKey为Key的缓存项 的缓存项 不会失效,一般可以在数据访问的基类中将Insert\Update\Delete执行的地方调用这个方法即可。

 

如果用DataSet,代码类似这样:

 

Code

 

如果用实体类,代码类似这样:

 

Code

 

 

 

 

 

 

posted @ 2008-08-12 09:59  要有好的心情  阅读(1301)  评论(0编辑  收藏  举报