缓存失效通知SqlCacheDependency

时间:2011-06-28 05:36:04

标签: asp.net sqlcachedependency

我正在尝试为我的ASP.NET应用程序(ASP.NET 3.5,SQL 2008)中的某些参考数据创建SQL缓存依赖项。我已经使用aspnet_regiis实用程序为我的数据库和几个表启用了sql缓存。我在web.config中创建了所需的sqlcachedependency条目。我在application_start事件中添加了以下代码

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 个答案:

答案 0 :(得分:1)

错误发生在MS SQL存储过程dbo.AspNet_SqlCacheRegisterTableStoredProcedure和dbo.AspNet_SqlCacheUnRegisterTableStoredProcedure中。这些存储过程注册和取消注册用于SQL缓存监视的表,但仅适用于默认架构中的表。我的表位于不同的模式中,因此未正确创建触发器。我修改了这两个存储过程来处理非模式的表,问题得到了解决