版本
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:\Teddy\NBearV3\src\NBear.Test.UnitTests\EntityConfig.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()方法手動讀寫和刪除緩存對象。
//正文結束