Очистить группу кеша в asp.net mvc 3 - PullRequest
1 голос
/ 24 сентября 2011

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

вот код

  public IEnumerable<SelectListItem> GetCategoriesByParentId(int parentCategoryId)
    {
        string cacheKey = "PC" + parentCategoryId.ToString();
        DateTime expiration = DateTime.Now.AddDays(1);
        IEnumerable<SelectListItem> categoryList ;
        categoryList = HttpContext.Current.Cache[cacheKey] as IEnumerable<SelectListItem>;
        if (categoryList == null)
        {
            categoryList = GetCategoryList(parentCategoryId);      // getting category from database         
            HttpContext.Current.Cache.Add(cacheKey, categoryList, null, expiration, TimeSpan.Zero, System.Web.Caching.CacheItemPriority.Normal, null);
        }
        return categoryList;

    }

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

Есть идеи?

1 Ответ

1 голос
/ 24 сентября 2011

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

HttpContext.Current.Cache.Remove("PC" + parentCategoryId);

Теперь, если добавление новой категории не выполняется вашим приложением и вы не можете ее контролировать, вы можете взглянуть на срок действия кэша с зависимостью SQL .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...