public IActionResult Details()

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);
        }