用程序包含一个非常简单的 web 应用程序,该应用程序有一个用于列举 Pubs 数据库中作者的 Web 窗体和一个用于查询 Pubs 以获取这些作者的数据访问类。数据访问类 Author.cs,使用 Microsoft 数据访问应用程序块最小化数据访问所需的代码量。在添加缓存支持之前,它包含两个方法:ListAuthors() 和 ListAuthors(string state)。每个方法返回一个带有 Authors 表内容的 DataTable—后者用 state 列的值过滤。添加缓存支持之前的 ListAuthors() 方法如代码示例 4 所示。
代码示例 4. 没有缓存支持的简单数据访问方法
public static DataTable ListAuthors()
{
return SqlHelper.ExecuteDataset(ConnectionString,
CommandType.Text,
"SELECT * FROM Authors").Tables[0];
}
使用 CacheConfig 为该方法添加缓存支持,必须首先创建一个匹配 GetDataTableCalllback 委托签名的新重载,这意味着必须返回一个 DataTable 并接受一个对象数组作为它唯一的参数。我们将把实际数据访问代码移动到这个新方法中,如代码示例 5 所示。
代码示例 5. 把实际数据访问代码移动到匹配委托的方法中。
protected static DataTable ListAuthors(object args)
{
return SqlHelper.ExecuteDataset(ConnectionString,
CommandType.Text,
"SELECT * FROM Authors").Tables[0];
}
创建新方法后,更改原始方法以使用 CacheConfig.DeCache() 方法,并向它发送一个引用新 ListAuthors(object) 方法的回调函数。代码示例 6 显示了 ListAuthors() 的新版本。
代码示例 6. ListAuthors(),现在修改为包含缓存支持
public sta