首先我是做web開發的,所以很多會偏向web的,組件使用的緩存是System.Web.HttpRuntime.Cache。
組件在默認情況下是關閉緩存的。
所以要開啟緩存查詢要做一下配置。
先看一下例子配置:
<configSections>
<section name="HxjCacheConfig" type="Hxj.Data.CacheConfiguration,Hxj.Data"/>
</configSections>
<HxjCacheConfig enable="true">
<entities>
<add key="NorthwindConnectionString.Products" value="60"></add>
</entities>
</HxjCacheConfig>
<connectionStrings>
<add name="NorthwindConnectionString" connectionString="Data Source=ricci\hu;Initial Catalog=Northwind;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
HxjCacheConfig 節點的 enable 表示是否開啟緩存,默認是關閉狀態,除非顯式開啟 enable="true" 。
entities 節點下的配置就是對實體查詢的緩存配置。
<add key="NorthwindConnectionString.Products" value="60"></add>
表示connectionStrings中的節點name="NorthwindConnectionString"的連接下的Products表配置.
value="60" 表示緩存60秒。
所以一定要connectionStrings的name加上實體名,不然配置無效。
當然value也可以是緩存依賴的文件。
<add key="NorthwindConnectionString.Products" value="1.txt"></add>
表示Products表的查詢緩存依賴程序根目錄下的1.txt文件。組件會判斷該文件是否存在,不存在則該 配置無效。
那測試一下緩存配置。
List<Products> list = new List<Products>();
for (int i = 0; i < 2; i++)
{
list.Add(DbSession.Default.From<Products>().ToFirst());
}
for (int i = 0; i < 3; i++)
{
list.Add(DbSession.Default.From<Products>().ToFirst());
}