CacheDependency из 2 или более других элементов кэша. (ASP.NET MVC3)

Я немного озадачен возможными зависимостями кэша в asp.net, и я не уверен, как их использовать.

Я хотел бы добавить элементы в HttpRuntime.Cache таким образом, чтобы эти элементы стали недействительными, если я изменю другие элементы в кэше. Зависимости должны быть определены ключом.

Я хочу такую ​​функцию:

public MyObject LoadFromCache(string itemDescriptor, IEnumerable<string> dependencies)
{
    var ret = HttpRuntime.Cache[itemDescriptor] as MyObject;
    if (ret == null)
    {
        ret = LoadFromDataBase(itemDescriptor);

        //this is the part I'm not able to figure out. Adding more than one dependency items.
        var dep = new CacheDependency();
        dependencies.ForEach(o => dep.SomeHowAdd(o));

        HttpRuntime.Cache.Add(
            itemDescriptor, 
            ret, 
            dependencies, 
            System.Web.Caching.Cache.NoAbsoluteExpiration, 
            System.Web.Caching.Cache.NoSlidingExpiration, 
            Caching.CacheItemPriority.Normal, 
            null
        );
    }
    return ret;
}

Помоги мне в этом.

1 ответ

Решение

Я не знал, что вы могли бы сделать это, но если вы посмотрите здесь на конструктор CacheDependency, вы увидите, что второй параметр представляет собой массив ключей кэша, так что, если любой из этих кэшированных элементов изменится, вся зависимость будет изменена и ваш зависимый элемент будет признан недействительным.

Таким образом, ваш код будет выглядеть примерно так:

String[] cacheKeys = new string[]{"cacheKey1","cacheKey2"};
var dep = New CacheDependency("", cacheKeys);

HttpRuntime.Cache.Add(itemDescriptor, ret, dep ...);
Другие вопросы по тегам