上面的代码在SqlDataSource控件上施加了SQL缓存无效功能。你已经看到,这个SqlDataSource控件包含EnableCaching和SqlCacheDependency两个属性。其中,SqlCacheDependency属性使用下列语法:
在这个属性声明中,你首先列举出数据库的名称,后面跟着的是数据库表名。由于这一属性,无论何时Pubs数据库中的authors表中的数据改变, 缓冲数据都会自动地无效。注意,你在此指定的数据库名应该已经定义在web.config文件的connectionStrings节中。
作为SqlDataSource控件声明的一部分,你还要指定 SelectCommand,InsertCommand,DeleteCommand,UpdateCommand和ConnectionString 属性。这些xxxCommand属性允许你指定要被执行的SQL命令,而ConnectionString属性允许你指定用于连接到Pubs数据库的连接 字符串;另外,这个值还可以从web.config文件中进行检索。因为该xxxCommand属性也包含SQL查询参数,所以,它们可以在 DeleteParameters,UpdateParameters和InsertParameters模板中指定。
最后,声明一个GridView控件并且使用DataSourceID属性把GridView控件绑定到SqlDataSource控件上。通过把 GridView的DataSourceID属性设置为SqlDataSource控件的ID,从SqlDataSource返回的数据就可以被自动地显 示。
现在,代码分析完毕;那么,接下来,你可以启动浏览器导航到该页面来测试这种缓冲功能。你将看到类似下图1的输出结果:
图1:在SqlDataSource控件中实现SQL缓存无效运行结果
其中,这里的timestamp栏显示数据库日期的“秒”部分。如果你再次刷新该页面,你将在随后显示的输出中看到相同的时间,因为你已启动了该SqlDataSource控件中的缓冲功能。
现在,为了测试这种基于SQL Server的触发器无效效果,你可以点击一个Edit超级链接并更新相应的作者信息。之后,你应该在显示于上面的页面中的timestamp中看到发生 了改变。这个例子非常清晰地展示了,一旦authors表中的数据发生变化,你的基于SQL Server的触发器无效机制将自动地使SqlDataSource控件中的缓冲内容无效。