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

使用基于轮询的SQL数据缓存依赖,主要有三个过程:

一.配置数据库

配置数据库可以使用aspnet_regsql命令,也可以使用SqlCacheDependencyAdmin类.这里我们选择用SqlCacheDependencyAdmin类..具体做法为:在Global.asax的Application_OnStart中用SqlCacheDependencyAdmin类启用相关数据库和数据表的缓存依赖.示例代码如下:

<%@ Application Language="C#" %>
<%@ Import Namespace="System.Configuration" %>
<%@ Import Namespace="System.Web.Caching" %>

<script runat="server">

    
void Application_Start(object sender, EventArgs e) 
    
{
        
//---以下实现的是启动数据库和数据表的SQL缓存依赖功能,登录用户需要有管理相关数据库的权限

       
//获取连接字符串
        string connString = ConfigurationManager.ConnectionStrings["pubsConn"].ConnectionString;
        
//变量needToInstall指示是否需要启动数据缓存依赖
        bool needToInstall = true;
        
try
        
{
            
string[] tables = SqlCacheDependencyAdmin.GetTablesEnabledForNotifications(connString);
            
if (tables != null)
            
{
                
//如果包含titles表,则变量为needToInstall为false,即不用再安装
                foreach (string table in tables)
                
{
                    
if (table.ToLower().Equals("titles"))
                    
{
                        needToInstall 
= false;
                    }

                }

            }

        }

        
catch (Exception ex)
        
{
            needToInstall 
= true;
        }

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

            
catch (Exception ex)
            
{                 
            }

        }


    }


..

</script>

二.配置Web.config文件.

另外,还需要配置Web.config文件,以设置连接字符串及缓存设置:

<?xml version="1.0" encoding="utf-8"?>

<configuration>

  
<connectionStrings>//设置连接字符串
    <add name="pubsConn" connectionString="Data Source=localhost;Initial Catalog=pubs;IntegratedSecurity=True;" providerName="System.Data.SqlClient"/>    
  
</connectionStrings>
  
    
<system.web>
      
      
<caching>//设置缓存依赖
        <sqlCacheDependency enabled="true" pollTime="600">
          
<databases>
            
<add name="pubs" connectionStringName="pubsConn"/>
          
</databases>
        
</sqlCacheDependency>
      
</caching>  
      ..
  
</system.web>
</configuration>

三.开始使用.

开启了数据库的缓存依赖功能,并在Web.config中配置了缓存属性后,便可开始使用该缓存依赖.

可以在页面缓存中应用该缓存依赖:

<%@ OutputCache Duration="100" SqlDependency="pubs:titles" VaryByParam="none" %>

也可以在数据库源中运用该缓存依赖:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" EnableCaching="true" SqlCacheDependency="pubs:titles" SelectCommand="select titledid,price from dbo.titles" ConnectionString="<%$ ConnectionStrings:connString %>" />

当然,也可以在应用程序数据缓存中使用该缓存信赖:

SqlCacheDependency scd
=new SqlCacheDependency("pubs","titles");

Cache.Insert(
"TitleCount",count,scd);
posted @ 2007-05-25 09:34  wenanry  阅读(532)  评论(0编辑  收藏  举报