我的需求是在Key值表之上构建一个简单的配置框架。由于这是经常使用且很少更改的,因此更倾向于缓存表值。一个要求是,如果值在DB中改变,它应该立即反映在应用程序中。所以,我计划实现SqlCacheDependency。医生说
SQL Server 2005的查询通知机制检测更改对数据进行处理,使SQL查询的结果无效,并删除任何数据缓存与SQL查询关联的项System.Web.Caching.Cache
从示例中我注意到配置中有一个名为PollTime的属性。医生说
获取或设置SqlCacheDependency轮询对象的频率修改数据库表
我很困惑,它是使用查询通知技术还是使用轮询机制。
我的堆栈是。net 4.0和SQL Server 2008 R2
从SqlServer 2005开始(因此适用于SqlServer 2008R2), Sql缓存依赖通过使用查询更改通知机制工作。他们使用内置在数据库中的通知基础设施和消息传递系统,称为 Service Broker
。
Sql server 2000和更早的版本采用了轮询机制。
你可能有兴趣进一步阅读以下建议::
Jess Liberty, Book: programming in asp.net (Oreilly Media)的作者说:
如果您使用sqlserver 2005或更高版本的查询通知机制,则无需使用aspnet_regsql.exe
配置数据库,也无需在web.config
中添加<sqlCacheDependency>
元素。
MSDN
还说明::当您在SQL Server 2005上使用sqlCacheDependency
元素与查询通知一起使用时,此配置设置即<sqlCacheDependency>
没有效果。这意味着当使用查询通知时,设置pollTime
将没有效果。