ASP.NET 数据库缓存依赖(2)
最后我们把dataset连同onremove委托一起插入到缓存中,在session_start中,为了“保险“,我另外添加了一个判断来调用refreshcache方法填充缓存。
到这里,我们应用程序就创建好了,在任何页面中都可以访问到缓存的dataset。在webform1aspx中,我演示了如何使用它。
[c#]
private void page_load(object sender, system.eventargs e)
{
//保证缓存非空,如果为空,则填充它
if(cache["employees"] == null)
cachestatus.text = "cache refreshed at "+ datetime.now.tolongtimestring();
else
cachestatus.text = " dataset from cache ";
dataset ds = (dataset)cache["employees"];
datagrid1.datasource= ds.tables[0];
datagrid1.databind();
}
现在,如果你请求这个页面,它将会每次成功的显示从从cache中取得的dataset,如果你保持浏览器打开,同时打开sql server的查询分析器,选择northwind数据库,执行sql语句'update employees set lastname = 'davovlieu' where employeeid =1',更新表中的记录,然后重新请求该页面,你将会看到缓存已经失效并刷新。
译者按:关于基于数据库的缓存依赖,gotdotnet上也有一个用dataset实现的(rob howard 实现) asp.net cache invalidation on database change,
目前在asp.net1.1版本没有非常自然的解决方案,值得欣慰的是,随whidbey一起发布的asp.net2.0,还有yuku,从数据层提供了一个不错的实现。让我们拭目以待!
Tag: 缓存
文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。