以前使用cache的时候,总是当心cache中数据版本和数据库中数据版本不一致,虽然通过触发器+文件io实现的文件缓存依赖也可以实现缓存数据的及时更新,但是每个应用产生一个io文件,不怎么经济,另外触发器性能也不是很高,所以经常在添加删除修改的时候,删除缓存键值来实现,但可能还有遗漏的地方。asp.net 2.0中实现了sqlcachedependency,本文描述如何在asp.net 2.0实现sqlcachedependency:
首先,在web.config system.web节点文件里面加上如下代码:
<caching>
<sqlcachedependency enabled="true">
<databases>
<add name="atlasdemodb" connectionstringname="atlasdemodbconnectionstring" polltime="12000"></add>
</databases>
</sqlcachedependency>
</caching>
这样即配置了一个缓存依赖的数据库,在页面中的objectdatasource对象的enablecaching设置为true.,然后设置sqlcachedependency属性为atlasdemodb:simpledemo1,atlasdemodb为web.config配置的缓存数据库名称,simpledemo1为该数据库下的一个表名。
光是这样,系统还会出现如下问题:
没有为 sql 缓存通知启用数据库“atlasdemodb”。
要为 sql 缓存通知启用数据库,请使用 system.web.caching.sqlcachedependencyadmin.enablenotifications 方法,或命令行工具 aspnet_regsql。要使用此工具,请运行“aspnet_regsql.exe -?”以了解详细信息。
按照上面所说,运行aspnet_regsql.exe 比较烦,可以在page_load事件中填写
system.web.caching.sqlcachedependencyadmin.enabletablefornotifications(system.configuration.configurationmanager.connectionstrings["atlasdemodbconnectionstring"].connectionstring, "simpledemo1");
这样就可以使用sqlcachedependency了。
最大的网站源码资源下载站,
新闻热点
疑难解答
图片精选