Как получить список базы данных один раз при создании веб-страницы MVC? - PullRequest
0 голосов
/ 29 сентября 2018

Я создаю сайт интернет-магазина.Я хочу отобразить 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 ]

0 голосов
/ 29 сентября 2018

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

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

0 голосов
/ 29 сентября 2018

Я думаю, что 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;
}
...