zoukankan      html  css  js  c++  java
  • 如何实现asp.net 2.0的SqlCacheDependency

    以前使用Cache的时候,总是当心Cache中数据版本和数据库中数据版本不一致,虽然通过触发器+文件IO实现的文件缓存依赖也可以实现缓存数据的及时更新,但是每个应用产生一个IO文件,不怎么经济,另外触发器性能也不是很高,所以经常在添加删除修改的时候,删除缓存键值来实现,但可能还有遗漏的地方。asp.net 2.0中实现了SqlCacheDependency,本文描述如何在asp.net 2.0实现SqlCacheDependency:
    首先,在web.config system.web节点文件里面加上如下代码: 

       <caching>
        
    <sqlCacheDependency enabled="true">
         
    <databases>
          
    <add name="AtlasDemoDb" connectionStringName="AtlasDemoDbConnectionString" pollTime="12000"></add>
         
    </databases>
        
    </sqlCacheDependency>
       
    </caching>


    这样即配置了一个缓存依赖的数据库,在页面中的ObjectDataSource对象的EnableCaching设置为true.,然后设置SqlCacheDependency属性为AtlasDemoDb:SimpleDemo1,AtlasDemoDb为web.config配置的缓存数据库名称,SimpleDemo1为该数据库下的一个表名。
    光是这样,系统还会出现如下问题:

    没有为 SQL 缓存通知启用数据库“AtlasDemoDb”。

    要为 SQL 缓存通知启用数据库,请使用 System.Web.Caching.SqlCacheDependencyAdmin.EnableNotifications 方法,或命令行工具 aspnet_regsql。要使用此工具,请运行“aspnet_regsql.exe -?”以了解详细信息。

    按照上面所说,运行aspnet_regsql.exe 比较烦,可以在Page_Load事件中填写

    System.Web.Caching.SqlCacheDependencyAdmin.EnableTableForNotifications(System.Configuration.ConfigurationManager.ConnectionStrings["AtlasDemoDbConnectionString"].ConnectionString, "SimpleDemo1");

    这样就可以使用SqlCacheDependency了。明天测试一下该方法的性能。今天太困了,先睡了
  • 相关阅读:
    【摘录】面试官也许会这样问你....
    asp.net 面试题 【摘要】
    sql子查询
    c# 设计模式 之:简单工厂、工厂方法、抽象工厂之小结、区别
    C#编程:AOP编程思想
    EF Core 保存数据
    详解C#中的反射
    .Net Core RSA加解密,签名
    Sql Server帮助类
    c# DbfHelper 帮助类
  • 原文地址:https://www.cnblogs.com/jillzhang/p/477914.html
Copyright © 2011-2022 走看看