Я пытаюсь получить имя веб-сайта для базы данных, вот модель:
public class Store
{
public int Id { get; set; }
public string StoreName { get; set; }
}
Я пытаюсь сделать только один запрос к базе данных для этой информации.
Этот SiteName в настоящее время используется в панели навигации, но, вероятно, будет использоваться в других местах.
Я создал ViewComponent для панели навигации:
public class NavbarViewComponent : ViewComponent
{
private IStoreRepository _storeRepository;
private string _storeName;
public NavbarViewComponent(IStoreRepository storeRepository)
{
_storeRepository = storeRepository;
_storeName = _storeRepository.GetStoreById(1).StoreName;
}
public IViewComponentResult Invoke()
{
return View((object)_storeName);
}
}
Доступ так:
@model string
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" asp-controller="App" asp-action="Index">@Model</a> <!-- Here -->
...
Проблема в том, что каждый раз, когда загружается страница, делается запрос к базе данных, чтобы получить ее, что понятно. Однако я не уверен, как сделать так, чтобы SiteName был доступен одним вызовом в репозиторий и сохранен для будущего использования.
Я думал о загрузке его в переменную сеанса, но на самом деле он должен быть постоянным в 100% случаев.