SqlDependency和SqlCacheDependency緩存的用法


SqlDependency配合ServiceBroker實現緩存

步驟一:

sql數據庫必須開啟ServiceBroker服務,首先檢測是否已經啟用ServiceBroker,檢測方法:

Select  DATABASEpRoPERTYEX('dbname','IsBrokerEnabled')

--1表示已經啟用0表示沒有啟用

步驟二:

如果ServiceBroker沒有啟用,使用下面語句啟用:

ALTER  DATABASE  <數據庫名稱>  SET  ENABLE_BROKER;

步驟三:

在實現基於服務的SQL數據緩存依賴過程中,需要顯式調用SqlDependency.Start來啟動接受依賴項更改通知的偵聽器。

SqlDependency.Start(connectionString);//推薦將這段代碼加到Global.asax的Application_Start方法中
SqlDependency.Stop(connectionString);//用於關閉,可加在Global.asax的Application_End方法中

步驟四:緩存實現

使用sqldependency實現緩存的代碼:

public class CacheHelper {
    static Cache WebCache = HttpContext.Current.Cache;
    static string DefaultConn = ConfigurationManager.ConnectionStrings["Default"].ConnectionString;
    public static DataTable GetSystemParams() {
      if (WebCache["SystemParam"] == null) {
            string strSQL = "select uSystemParamID,ParamName,ParamValue,Description from  dbo.DTS_SystemParam";
        SqlDataAdapter da = new SqlDataAdapter(strSQL, DefaultConn);
        SqlDependency dep = new SqlDependency(da.SelectCommand);
        dep.OnChange += new OnChangeEventHandler(dep_OnChange);
        DataTable tbl = new DataTable(); da.Fill(tbl);
        WebCache["SystemParam"] = tbl;
        return tbl;
       }
       else {
          return (DataTable) WebCache["SystemParam"];
       }
}
   private static void dep_OnChange(object sender, SqlNotificationEventArgs e) {
        WebCache.Remove("SystemParam");
   }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM