C# memoryCache получить доступ к новому значению при вставке в кеш
У меня есть следующий блок кода, который получает sessionId и должен вернуть связанный идентификатор пользователя.
private static async Task<string> AddOrGetExisting(string sessionId, Func<Task<Tuple<string, DateTime>>> factory)
{
var newValue = new Lazy<Task<Tuple<string, DateTime>>>(factory);
var oldValue = _cache.AddOrGetExisting(sessionId, newValue, new CacheItemPolicy() { AbsoluteExpiration = (await newValue.Value).Item2 } ) as Lazy<Task<Tuple<string, DateTime>>>;
try
{
return (await (oldValue ?? newValue).Value).Item1;
}
catch
{
_cache.Remove(sessionId);
throw;
}
}
Всякий раз, когда я сохраняю сеанс, я хочу, чтобы кэш сохранял его только до истечения срока его действия.
Кортеж содержит (строку)UserId
и (DateTime)ExpirationDate
, Проблема с тем, что я написал, заключается в том, что я постоянно вызываю фабрику, которая извлекает данные из базы данных, которая как бы разрушает саму идею кеша.
Как я могу получить доступ к значению только после / если оно было получено?