Database 如何减少对Layout.NET Core的查询
我创建了一个类来获取我的网站设置。在此设置表中,我存储电话号码、电子邮件地址、地址等。管理员用户可以更改其设置Database 如何减少对Layout.NET Core的查询,database,caching,razor,layout,.net-core,Database,Caching,Razor,Layout,.net Core,我创建了一个类来获取我的网站设置。在此设置表中,我存储电话号码、电子邮件地址、地址等。管理员用户可以更改其设置 public interface IAppGlobalVariableService { Task<List<Configuration>> GetAllConfig(); Task<string> GetValue(string name); } public class AppGlobalVariablesService : I
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;
}
}
我注射了!
@inject IAppGlobalVariableService AppConfig
我将在大多数情况下使用此代码。你有没有办法减少对DotnetCore2.2的查询?我可以做一些类似于查询数据库一次的事情来获取变量吗。和存储缓存
更新:
我更新了startup.cs文件(AddTransient到addscope),它还原了查询。但是我想学习我可以使用单一查询吗
services.AddScoped<IAppGlobalVariableService, AppGlobalVariablesService>();
services.addScope();
使用AddScoped
,而不是使用AddSingleton
。我使用了,但收到了一个错误。“无法从Singleton使用作用域服务”关于IRepository
?如果它是范围内的
或瞬态的
,那么您得到的错误就是因为它。Singleton
无法引用范围为的实例。
services.AddScoped<IAppGlobalVariableService, AppGlobalVariablesService>();