Я создал класс для получения настроек сайта.В этой таблице настроек я храню номер телефона, адрес электронной почты, адрес и т. Д. Пользователь с правами администратора может изменять свои настройки.
public interface IAppGlobalVariableService
{
Task<List<Configuration>> GetAllConfig();
Task<string> GetValue(string name);
}
public class AppGlobalVariablesService : IAppGlobalVariableService
{
private readonly IRepository<Configuration> _configRepository;
private static Task<List<Configuration>> _configList;
public AppGlobalVariablesService(IRepository<Configuration> configRepository)
{
_configRepository = configRepository;
_configList = GetAllConfig();
}
public async Task<List<Configuration>> GetAllConfig()
{
return await _configRepository.GetAll().ToListAsync();
}
public Task<string> GetValue(string name)
{
return GetConfigByName(name);
}
private static async Task<string> GetConfigByName(string name)
{
var configList = await _configList;
return configList.FirstOrDefault(x => x.ConfigName == name)?.ConfigValue;
}
}
В макете я называю свои настройки как стиль просмотра компонентов.
@await AppConfig.GetValue("Facebook")
Я ввел _ViewImports
@inject IAppGlobalVariableService AppConfig
Я буду использовать этот код в большинстве случаев.Есть ли у вас идеи уменьшить количество запросов для dotnet core 2.2?Могу ли я сделать что-то вроде запроса к базе данных один раз, чтобы получить переменные.А хранить кеш?
ОБНОВЛЕНИЕ: Я обновил свой файл startup.cs (AddTransient to AddScoped) Он перенаправил запросы.Но я хочу узнать, могу ли я использовать один запрос?
services.AddScoped<IAppGlobalVariableService, AppGlobalVariablesService>();