部落格園中系列文章:溫故知新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