Как получить список базы данных один раз при создании веб-страницы MVC?

Я создаю сайт интернет-магазина. Я хочу отобразить ProductCategory в виде боковой панели (краткий список категорий, например, Одежда, Электроника, Мебель, Книги и т. Д.).

Вместо того, чтобы загружать список баз данных каждый раз, я иду в Контроллер, я хочу загрузить его один раз, когда загружается веб-сайт. Должен ли я использовать TempData, Session["], ViewBag или любые другие опции? Я определенно не хочу совершать поездки в базу данных, чтобы перезагрузить один и тот же список на каждой странице

public IEnumerable<ProductCategory> GetAllProductCategory()
{
    return _context.ProductCategory.ToList();
}

public partial class Product
{
    public int ProductId { get; set; }
    public string ProductName { get; set; }
    public string ProductDescription { get; set; }
    public string ImageLocation { get; set; }

    public int? ProductCategoryId { get; set; }
    public virtual ProductCategory ProductCategory { get; set; }
}

2 ответа

Решение

Если ваши категории не будут часто меняться во время сеанса, вы можете сохранить их как объект javascript (на стороне клиента), используя sessionStorage. Они будут храниться, пока пользователь подключен

Вот как это использовать sessionStorage MDN

Я думаю, что MemoryCache - это то, что вы ищете. https://msdn.microsoft.com/en-us/library/ff477235.aspx

Пример:

public IEnumerable<ProductCategory> GetAllProductCategory()
{
    IEnumerable<ProductCategory> list = MemoryCache.Default["Product_categories"] as IEnumerable<ProductCategory>;
    if (list == null)
    {
        list = _context.ProductCategory.ToList();
        MemoryCache.Default["Product_categories"] = list ;
    }
    return list;
}
Другие вопросы по тегам