public static List <SelectItem> GetProducts(IMemoryCache cache, NrthContext context) { var key = nameof(Product); if (cache.TryGetValue(key, out object values)) { var items = values as List <SelectItem>; return(items); } else { lock (_syncLock) { if (cache.TryGetValue(key, out object value)) { return(value as List <SelectItem>); } var items = context.Products.Select(p => new SelectItem(p.ProductId.ToString(), p.ProductName)).ToList(); cache.Set(key, items); return(items); } } }
public HomeController(IMemoryCache cache) { _ctx = new NrthContext(); _cache = cache; }