我是Castle Active Record Pattern的新手,我试图了解如何有效地使用缓存。 所以我试图做(或想要做)的是在调用GetAll时,找出我之前是否已经调用它并检查缓存,否则加载它,但我也想传递一个bool参数,它将强制缓存清除并重新查询数据库。
所以我只是在找最后一点。 感谢
public static List<Model.Resource> GetAll(bool forceReload)
{
List<Model.Resource> resources = new List<Model.Resource>();
//Request to force reload
if (forceReload)
{
//need to specify to force a reload (how?)
XmlConfigurationSource source = new XmlConfigurationSource("appconfig.xml");
ActiveRecordStarter.Initialize(source, typeof(Model.Resource));
resources = Model.Resource.FindAll().ToList();
}
else
{
//Check the cache somehow and return the cache?
}
return resources;
}
public static List<Model.Resource> GetAll()
{
return GetAll(false);
}
答案 0 :(得分:3)
看看缓存模式:
顺便说一下,每次调用GetAll时,您都在初始化ActiveRecord。当您的应用程序启动时,您只需要初始化一次。
此外,一般来说,明确释放缓存并不是一种好习惯。相反,使用某种策略或依赖(参见例如SqlDependency)
此外,NHibernate还有一个可插拔的二级缓存。