Castle Active Record - 使用缓存

时间:2010-04-12 10:12:05

标签: c# castle-activerecord

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

    }

1 个答案:

答案 0 :(得分:3)

看看缓存模式:

顺便说一下,每次调用GetAll时,您都在初始化ActiveRecord。当您的应用程序启动时,您只需要初始化一次。

此外,一般来说,明确释放缓存并不是一种好习惯。相反,使用某种策略或依赖(参见例如SqlDependency)

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