[转]使用基于轮询的SQL数据缓存依赖

None.gif 使用基于轮询的SQL数据缓存依赖,主要有三个过程:
None.gif
None.gif一.配置数据库
None.gif
None.gif配置数据库可以使用aspnet_regsql命令,也可以使用SqlCacheDependencyAdmin类.这里我们选择用SqlCacheDependencyAdmin类..具体做法为:在Global.asax的Application_OnStart中用SqlCacheDependencyAdmin类启用相关数据库和数据表的缓存依赖.示例代码如下:
None.gif
None.gif
<% @ Application Language = " C# "   %>
None.gif
<% @ Import Namespace = " System.Configuration "   %>
None.gif
<% @ Import Namespace = " System.Web.Caching "   %>
None.gif
None.gif
< script runat = " server " >
None.gif
None.gif    
void  Application_Start( object  sender, EventArgs e) 
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
//---以下实现的是启动数据库和数据表的SQL缓存依赖功能,登录用户需要有管理相关数据库的权限
InBlock.gif
InBlock.gif       
//获取连接字符串
InBlock.gif
        string connString = ConfigurationManager.ConnectionStrings["pubsConn"].ConnectionString;
InBlock.gif        
//变量needToInstall指示是否需要启动数据缓存依赖
InBlock.gif
        bool needToInstall = true;
InBlock.gif        
try
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
string[] tables = SqlCacheDependencyAdmin.GetTablesEnabledForNotifications(connString);
InBlock.gif            
if (tables != null)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
//如果包含titles表,则变量为needToInstall为false,即不用再安装
InBlock.gif
                foreach (string table in tables)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    
if (table.ToLower().Equals("titles"))
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        needToInstall 
= false;
ExpandedSubBlockEnd.gif                    }

ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

InBlock.gif        
catch (Exception ex)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            needToInstall 
= true;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
//---如果变量needToInstall为true,则启用数据库pubs和数据表titles的缓存依赖功能
InBlock.gif
        if (needToInstall)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
try
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
//启用数据库缓存依赖
InBlock.gif
                SqlCacheDependencyAdmin.EnableNotifications(connString);
InBlock.gif                
//启用数据表缓存依赖
InBlock.gif
                SqlCacheDependencyAdmin.EnableTableForNotifications(connString, "titles");
ExpandedSubBlockEnd.gif            }

InBlock.gif            
catch (Exception ex)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{                 
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedBlockEnd.gif    }

None.gif
None.gifdot.gifdot.gif..
None.gif
None.gif
</ script >
None.gif
None.gif二.配置Web.config文件.
None.gif
None.gif另外,还需要配置Web.config文件,以设置连接字符串及缓存设置:
None.gif
None.gif
<? xml version = " 1.0 "  encoding = " utf-8 " ?>
None.gif
None.gif
< configuration >
None.gif
None.gif  
< connectionStrings > // 设置连接字符串
None.gif
     < add name = " pubsConn "  connectionString = " Data Source=localhost;Initial Catalog=pubs;IntegratedSecurity=True; "  providerName = " System.Data.SqlClient " />     
None.gif  
</ connectionStrings >
None.gif  
None.gif    
< system.web >
None.gif      
None.gif      
< caching > // 设置缓存依赖
None.gif
         < sqlCacheDependency enabled = " true "  pollTime = " 600 " >
None.gif          
< databases >
None.gif            
< add name = " pubs "  connectionStringName = " pubsConn " />
None.gif          
</ databases >
None.gif        
</ sqlCacheDependency >
None.gif      
</ caching >   
None.gif      dot.gifdot.gif..
None.gif  
</ system.web >
None.gif
</ configuration >
None.gif
None.gif三.开始使用.
None.gif
None.gif开启了数据库的缓存依赖功能,并在Web.config中配置了缓存属性后,便可开始使用该缓存依赖.
None.gif
None.gif可以在页面缓存中应用该缓存依赖:
None.gif
None.gif
<% @ OutputCache Duration = " 100 "  SqlDependency = " pubs:titles "  VaryByParam = " none "   %>
None.gif
None.gif也可以在数据库源中运用该缓存依赖:
None.gif
None.gif
< asp:SqlDataSource ID = " SqlDataSource1 "  runat = " server "  EnableCaching = " true "  SqlCacheDependency = " pubs:titles "  SelectCommand = " select titledid,price from dbo.titles "  ConnectionString = " <%$ ConnectionStrings:connString %> "   />
None.gif
None.gif当然,也可以在应用程序数据缓存中使用该缓存信赖:
None.gif
None.gifSqlCacheDependency scd
= new  SqlCacheDependency( " pubs " , " titles " );
None.gif
None.gifCache.Insert(
" TitleCount " ,count,scd);
None.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值