当前位置:主页   - 电脑 - 网站开发 - ASP.Net
NBearV3教程——Cache篇
来源:网络   作者:   更新时间:2012-08-15
收藏此页】    【字号    】    【打印】    【关闭

  版本

  1.0 [2006-11-18]

  简介

  本教程介绍NBearV3中的查询缓存支持。

  目标

  通过本教程,读者应能够全面掌握内置于NBearV3的查询缓存的使用。

  代码

  本教程不包含任何演示代码。

  时间

  <10分钟。

  正文

  1 配置及启用NBearV3中的缓存功能

  要启用缓存支持,需要在Web.config或App.config中添加cacheConfig配置节:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
  <section name="entityConfig" type="NBear.Common.EntityConfigurationSection, NBear.Common" />
  <section name="cacheConfig" type="NBear.Data.CacheConfigurationSection, NBear.Data" />
</configSections>
<entityConfig>
  <includes>
   <add key="Sample" value="C:TeddyNBearV3srcNBear.Test.UnitTestsEntityConfig.xml" />
  </includes>
</entityConfig>
<cacheConfig enable="true">
  <cachingTables>
   <add key="Northwind.Orders" value="5" />
  </cachingTables>
</cacheConfig>
<connectionStrings>
  <add name="Northwind" connectionString="Server=(local);Database=Northwind;Uid=sa;Pwd=sa" providerName="NBear.Data.SqlServer.SqlDbProvider"/>
</connectionStrings>
</configuration>

  注意代码中粗体的部分,首先在

  注意代码中粗体的部分,首先在

  configSections中添加cacheConfig这个section。接着,添加一个cacheConfig配置节,其中的cachingTables中可以有多个add,每一个add中,key的值格式为AAA.BBB;value代表缓存有效的时间长度,单位为秒。

  AAA代表对应的ConnectionString中的name。比如这里的Northwind代表了名为Northwind的ConnectionString。

  BBB代表数据库中实际的表名、视图名或存储过程名。

  2 在代码中启用、禁用和使用自动缓存

  一旦如上配置了启用缓存,则默认情况下,所有的NBear.Data.Gateway实例,默认将是开启了自动缓存功能的。相应的表、视图或存储过程被查询时,如果在config中设置为需要缓存的,则会被缓存。可以调用Gateway.TurnOnCache()和TurnOffCache()方法开启和关闭一个Gateway的缓存支持。

  在两种情况下,自动缓存会自动过期失效。一是被缓存的数据超过config中设置的缓存过期时间;二是,指定的过期时间还没到,但是,此时执行了对该实体的强类型写操作。所谓强类型写操作,指Gateway.Delete/Save/BatchDelete/BatchUpdate等这些带范型参数列表EntityType的范型方法。

  注:所有缓存数据是作为一个Gateway的静态变量,对所有的Gateway可见并共享的。也就是说,即使有多个Gateway实例,他们共享所有的缓存数据。并且,即使一个禁用了缓存的Gateway实例,对他执行的强类型写数据库操作,也会导致全局的Gateway缓存中的对应实体的缓存数据过期。

  3 在代码中使用自定义缓存

  除了默认的自动缓存之外,也可以手动的使用自定义缓存。任何时候,我们都可以使用任何Gateway实例的AddCache()/GetCache()/RemoveCache()和RemoveCaches()方法手动读写和删除缓存对象。

  //正文结束

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明