using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; namespace DOIOU.Server { public class DataRegistry { private readonly MemoryCache _cache = new(new MemoryCacheOptions() { ExpirationScanFrequency = TimeSpan.FromMinutes(30) }); public string? Query(string doiou) { if (!_cache.TryGetValue(doiou, out string? url)) { using DataContext db = new(); var record = db.Records.AsNoTracking().SingleOrDefault(r => r.Id == doiou); _cache.Set(doiou, record?.Url, TimeSpan.FromMinutes(30)); return record?.Url; } return url; } } }