У меня есть класс обслуживания 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;
}
}
}}