2011-06-28 98 views
2

我想創建我的ASP.NET應用程序(ASP.NET 3.5,SQL 2008)中的一些參考數據的SQL緩存依賴項。我使用aspnet_regiis實用程序爲我的數據庫和一些表啓用了sql緩存。我在web.config中創建了所需的sqlcachedependency條目。我在application_start事件中添加了以下代碼緩存失效通知SqlCacheDependency

DateTime dt = DateTime.Now;

  SqlCacheDependency dep1 = new SqlCacheDependency(databaseName, "Products"); 

      List<Product> productsList = new List<Product>(); 
      CacheItemRemovedCallback productRefresh = new CacheItemRemovedCallback(RefreshProducts); 

      HttpRuntime.Cache.Insert("Products", productsList, depProducts, dt, Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, productRefresh); 

我在回調函數RefreshProducts中從數據庫重裝數據。

出於某種原因,我無法在更改表中的數據時調用回調函數。我沒有得到任何運行時錯誤,我可以從AspNet_SqlCacheQueryRegisteredTablesStoredProcedure看到該表已啓用緩存。我通過用文件依賴關係替換sqldependency來測試代碼的其餘部分。當我更改文件時,立即調用回調函數,所以我的錯誤很可能是設置sqlcachedependency。

由於

回答

1

錯誤是在MS SQL存儲過程dbo.AspNet_SqlCacheRegisterTableStoredProcedure和dbo.AspNet_SqlCacheUnRegisterTableStoredProcedure。這些存儲過程爲SQL緩存監視註冊和取消註冊表,但僅適用於默認模式中的表。我的表格處於不同的模式,因此觸發器沒有正確創建。我修改了這兩個存儲過程以處理非模式表,並解決了問題