IMemoryCache удалить ключ при изменении таблицы БД - PullRequest
0 голосов
/ 25 июня 2018

У меня есть класс обслуживания PersonsCachingService для кэширования, и мне нужно сбросить ключ "allpersons" при изменении количества записей в этой таблице.В PHP-фреймворках, таких как Yii2 или Symfony, такая задача проста, но я не понимаю лучшего способа сделать это в Asp Core.Не могли бы вы предложить что-нибудь?

public class   PersonsCachingService
{
    private readonly ApplicationDbContext _dbContext;
    private readonly IMemoryCache _memoryCache;
    private static readonly int timeInSeconds = 30;

    public PersonsCachingService(ApplicationDbContext dbContext, IMemoryCache memoryCache)
    {
        _dbContext = dbContext;
        _memoryCache = memoryCache;
    }
    /// <summary>
    /// Get all table from cache
    /// </summary>
    public IList<Person> AllPersons
    {
        get
        {
            string cacheKey = "allpersons";
            if (_memoryCache.TryGetValue(cacheKey, out IList<Person> persons)) return persons;
            else
            {
                persons = _dbContext.Persons.ToList();
                _memoryCache.Set(cacheKey, persons, new MemoryCacheEntryOptions()
                    .SetAbsoluteExpiration(TimeSpan.FromSeconds(timeInSeconds)));
                return persons;
            }

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