由於項目有用到Cache這塊知識,這裡總結一下。
在Vs2008 Vc 視窗下運行 aspnet_regsql -C "server= (local)\tadb;database=abico;uid= sa;pwd =" -ed -et -t "Events"
會在你的Database建立一個AspNet_SqlCacheTablesForChangeNotification 這個表,還有若干個預存程序。
在Web.config 中配置下緩衝的資訊
配置資訊
<appSettings/>
<connectionStrings>
<add name="testCache" connectionString="data source = 127.0.0.1;initial catalog = abico;user id = sa ;password =135246 " providerName="System.Data.SqlClient"/>
</connectionStrings>
代碼
<system.web>
<caching>
<sqlCacheDependency enabled="true" pollTime="1000">
<databases>
<add name="abico" connectionStringName="testCache"/>
</databases>
</sqlCacheDependency>
其中pollTime 是輪詢資料庫的時間,預設是1分鐘,單位毫秒。這個參數很重要,類似定時器功能,應用程式會根據這個時間定時的去輪詢你的資料庫,擷取你的table是否有更新。
如果不在 Web.config中配置,也可以寫在SqlCacheDependencyAdmin這個類中。
如果想對多個表進行緩衝:
1)在AspNet_SqlCacheTablesForChangeNotification表中,新增一條記錄 tabName 就是你要緩衝的表
2)SqlCacheDependencyAdmin.EnableTableForNotifications(conString, "QX_User");第一個參數是連接字串,第二個是要緩衝的表名。
主要一點是你的緩衝依賴性 要寫對錶名
SqlCacheDependency dep = new SqlCacheDependency("abico", "QX_User"); abico:資料庫名,QX_User:表名。
------------------------------------------------------
我理解的Cache 就是.net自己做好了一個定時器根據PollTime時間去輪詢資料庫,調用預存程序,知道表的AspNet_SqlCacheTablesForChangeNotification的資訊,裡面有標記ChangeID。當ChangeID改變時,有回呼函數的就觸發回呼函數,沒有的話就把現有的緩衝刪除了。
-------------------------------------------------------
DEMO下載 /Files/86188281/CacheTest.rar