博客园中系列文章:温故知新ASP.NET 2.0(C#)(4) - 缓存&SqlCacheDependency中有一段关于数据源控件的Sql缓存的讲解,如下:
DataSource控件设置如下属性:EnableCaching="True" SqlCacheDependency="CacheTest:CacheTest" CacheDuration="Infinite"
如果是SqlServer2005则改成SqlDependency="CommandNotification"
注意配置文件中的配置
我测试了一下,总结了两点:
1、只要数据源控件采用如下配置:

Code
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetCacheTests"
TypeName="SqlCache.BLL.CacheTest"
EnableCaching="true"
CacheDuration="10"
SqlCacheDependency="CommandNotification">
</asp:ObjectDataSource>
无论是sql2000或2005、2008,都不需要额外做任何事情,配置文件也不需要写任何东西。
2、如果数据源控件采用如下配置:

Code
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetCacheTests"
TypeName="SqlCache.BLL.CacheTest"
EnableCaching="true"
CacheDuration="10"
SqlCacheDependency="CacheTest:CacheTest">
</asp:ObjectDataSource>
或
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetCacheTests"
TypeName="SqlCache.BLL.CacheTest"
EnableCaching="true"
CacheDuration="Infinite"
SqlCacheDependency="CacheTest:CacheTest">
</asp:ObjectDataSource>
无论是sql2000或2005、2008,配置文件中都要这样写:

Code
<caching>
<sqlCacheDependency enabled="true" pollTime="10000">
<databases>
<add name="CacheTest" connectionStringName="MsSqlConnString" />
</databases>
</sqlCacheDependency>
//如果是SqlServer2005的话,则只需如下设置,因为SqlServer支持基于通知的缓存失效
//<sqlCacheDependency enabled="true" />
//第7行的话是错误的。
</caching>
而且还要使用aspnet_regsql.exe工具,通知数据库。
我的测试代码:SqlCache.rar