1、数据库依赖类SqlCacheDependency
数据库缓存依赖主要解决的是当数据库的内容发生改变时,如何及时通知缓存,并更新缓存中的数据的问题。
语法定义:
SqlCacheDependency类主要的构造函数如下:
public SqlCacheDependency(string database,string table)
使用之前需要先配置web.config,加入如下节点。
<connectionStrings>
<add name="DBConfig" connectionString="......"/>
</connectionStrings> <system.web> <caching> <sqlCacheDependency enabled="true" pollTime="5000"> <databases> <add name="DispatchAssist" connectionStringName="DBConfig" /> </databases> </sqlCacheDependency> </caching> </system.web>
2、注册
打开VS命令提示工具,执行如下格式命令。
有身份验证输入:aspnet_regsql.exe -S SqlServer服务器 -U <Username> -P <Password> -ed -d 数据库名称 -et -t 表名
无身份验证输入:aspnet_regsql.exe -S SqlServer服务器 -ed -d 数据库名称 -et -t 表名
以下是该工具的命令参数说明:
-? 显示该工具的帮助功能;
-S 后接的参数为数据库服务器的名称或者IP地址;
-U 后接的参数为数据库的登陆用户名;
-P 后接的参数为数据库的登陆密码;
-E 当使用windows集成验证时,使用该功能;
-d 后接参数为对哪一个数据库采用SqlCacheDependency功能;
-t 后接参数为对哪一个表采用SqlCacheDependency功能;
-ed 允许对数据库使用SqlCacheDependency功能;
-dd 禁止对数据库采用SqlCacheDependency功能;
-et 允许对数据表采用SqlCacheDependency功能;
-dt 禁止对数据表采用SqlCacheDependency功能;
-lt 列出当前数据库中有哪些表已经采用sqlcachedependency功能。
3、实例示范
private readonly static string ALlRoleCacheKey = "ALlRoleCacheKey"; public List<UserRole> GetAllUserRole() { try { List<UserRole> list = CacheHelper.Get<List<UserRole>>(ALlRoleCacheKey); if (list == null) { list = _provider.GetAllUserRole(); //获取list数据源 System.Web.Caching.SqlCacheDependency dependency = new System.Web.Caching.SqlCacheDependency (System.Configuration.ConfigurationManager.AppSettings["CurrentDB"], "UserRole"); CacheHelper.Insert(ALlRoleCacheKey, list, dependency); } return list; } catch (Exception e) { Logger.Error("AuthManager. GetAllUserRole() ", e); return null; } }