ASP.NET 2.0 中的SqlCacheDependency特性


   
   它还会在指定的数据库中增加几个存储过程,用来让ASP.NET引擎查询追踪的数据表的情况。
   
   然后,它会给我们要追踪的Table加上几个Trigger,分别对应到Insert、Update、Delete操作,这几个Trigger的语句非常简单,就是把“AspNet_SqlCacheTablesForChangeNotification”表中对应“tableName”字段为这个追踪的表的名称的记录的“changeId”字段加上一个1。
   
    ASP.NET引擎通过执行它加上的存储过程“AspNet_SqlCachePollingStoredProcedure”,这个存储过程直接返回“AspNet_SqlCacheTablesForChangeNotification”表的内容,让ASP.NET引擎知道哪个表的数据发生的变化。默认每500毫秒执行这个存储过程一次,不过可以在web.config里面修改这个间隔时间,我的经验是这个查询操作也是很耗资源的,呵呵。
   
   2、 web.config配置
   
   在web.config里面的配置再简单不过了
   
   
   <configuration>
   
    <!-- 加上合适的数据库连接字符串 -->
   
    <connectionStrings>
   
    <add name="SqlServerConnectionString"
   
    connectionString="server=sqlserver1;uid=sa;pwd=
   
   password;database=PortalDB " />
   
    </connectionStrings>
   
    <system.web>
   
    <!-- 配置Cache一段,使之支持SqlCacheDependency -->
   
    <cache>
   
    <sqlCacheDependency enabled="true" pollTime="500">
   
    <databases>
   
    <add name=" PortalDB "
   
    connectionStringName=" SqlServerConnectionString " />
   
    </databases>
   
    </sqlCacheDependency>
   
    </cache>
   
    </system.web>
   
   </configuration>
   
   
   
   3、 在页面上的outputCache标签中指定SqlCacheDependency特性:
   
   
   
   <%@ outputcache duration="9999" varybyparam="None" sqldependency="PortalDB:追踪的数据表名称" %>
   
   
   
   只要在这个追踪的Table上执行了Insert、Update、Delete操作,数据表上的Trigger就会将数据库中“AspNet_SqlCacheTablesForChangeNotification”表的相应记录的相应“changId”字段值修改,然后ASP.NET引擎就会通过获取新的值来得知追踪的Table的内容发生了变化,自动使这个页面的cache失效。

你可能感兴趣的:(数据库,delete,asp.net,sqlserver,insert,引擎)