C# Castle活动记录-使用缓存

C# Castle活动记录-使用缓存,c#,castle-activerecord,C#,Castle Activerecord,我对Castle活动记录模式还不熟悉,我正试图了解如何有效地使用缓存。 因此,我试图(或想要)做的是在调用GetAll时,找出我之前是否调用过它并检查缓存,否则加载它,但我还想传递一个bool参数,强制缓存清除并重新查询数据库 所以我只是在寻找最后的片段。 谢谢 公共静态列表GetAll(bool forceReload) { 列表资源=新列表(); //强制重新加载请求 如果(强制重新加载) { //需要指定强制重新加载(如何?) XmlConfigurationSource=新的XmlCon

我对Castle活动记录模式还不熟悉,我正试图了解如何有效地使用缓存。 因此,我试图(或想要)做的是在调用GetAll时,找出我之前是否调用过它并检查缓存,否则加载它,但我还想传递一个bool参数,强制缓存清除并重新查询数据库

所以我只是在寻找最后的片段。 谢谢

公共静态列表GetAll(bool forceReload)
{
列表资源=新列表();
//强制重新加载请求
如果(强制重新加载)
{
//需要指定强制重新加载(如何?)
XmlConfigurationSource=新的XmlConfigurationSource(“appconfig.xml”);
初始化(source,typeof(Model.Resource));
resources=Model.Resource.FindAll().ToList();
}
其他的
{
//以某种方式检查缓存并返回缓存?
}
归还资源;
}
公共静态列表GetAll()
{
返回GetAll(false);
}

看看缓存模式:

顺便说一句,每次调用GetAll时都会初始化ActiveRecord。当应用程序启动时,只需初始化一次

另外,像这样显式地释放缓存通常不是好的做法。相反,使用某种策略或依赖关系(例如,请参见SqlDependency)


此外,NHibernate还有一个可插入的二级缓存。

看看缓存模式:

顺便说一句,每次调用GetAll时都会初始化ActiveRecord。当应用程序启动时,只需初始化一次

另外,像这样显式地释放缓存通常不是好的做法。相反,使用某种策略或依赖关系(例如,请参见SqlDependency)

此外,NHibernate还有一个可插入的二级缓存

        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);

    }