Замок Active Record - Работа с кешем - PullRequest
0 голосов
/ 12 апреля 2010

Я новичок в модели записи активных замков, и я пытаюсь понять, как эффективно использовать кэш. Так что я пытаюсь сделать (или хочу сделать) при вызове 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 Ответ

3 голосов
/ 12 апреля 2010

Посмотрите на схему кэширования:

Кстати, вы инициализируете ActiveRecord каждый раз, когда вызываете GetAll. Вы должны инициализировать только один раз, когда ваше приложение запускается.

Кроме того, обычно не рекомендуется явно освобождать кеш таким образом. Вместо этого используйте какую-либо политику или зависимость (см., Например, SqlDependency)

Кроме того, NHibernate имеет подключаемый кэш второго уровня.

...