in Hands-on lab/lab-files/src/src/PartsUnlimitedWebsite/Areas/Admin/Controllers/StoreManagerController.cs [104:129]
public IActionResult Details(int id)
{
string cacheId = string.Format("product_{0}", id);
if (!_cache.TryGetValue(cacheId, out Product product))
{
//If this returns null, don't stick it in the cache
product = _db.Products.FirstOrDefault(a => a.ProductId == id);
if (product != null)
{
// Remove it from cache if not retrieved in last 10 minutes
_cache.Set(cacheId, product, new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromMinutes(10)));
}
}
if (product == null)
{
_cache.Remove(cacheId);
return View((Product)null);
}
// TODO [EF] We don't query related data as yet. We have to populate this until we do automatically.
product.Category = _db.Categories.Single(g => g.CategoryId == product.CategoryId);
return View(product);
}