[转]使用基于轮询的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);
一.配置数据库
配置数据库可以使用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);