|
最后我们把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,从数据层提供了一个不错的实现。让我们拭目以待! 下面的工程是Visual Studio.NET 2003格式。 下载本文工程 (责任编辑:编程世界) |
