ABP сохраняет настройки в памяти со значениями по умолчанию. Когда вы вставляете новое значение параметра в базу данных, оно считывается из базы данных и переопределяет значение по умолчанию. Таким образом, в основном, когда в базе данных нет настроек, это означает, что все настройки имеют значения по умолчанию. Значения настроек хранятся в таблице AbpSettings. Чтобы начать использовать механизм настроек. Создайте свой собственный SettingProvider, унаследованный от SettingProvider. Инициализируйте его в своем модуле (например, ModuleZeroSampleProjectApplicationModule). Поскольку SettingProvider автоматически регистрируется для внедрения зависимостей; Вы можете внедрить ISettingManager куда угодно.
public class MySettingProvider : SettingProvider
{
public override IEnumerable<SettingDefinition> GetSettingDefinitions(SettingDefinitionProviderContext context)
{
return new[]
{
new SettingDefinition(
"SmtpServerAddress",
"127.0.0.1"
),
new SettingDefinition(
"PassiveUsersCanNotLogin",
"true",
scopes: SettingScopes.Application | SettingScopes.Tenant
),
new SettingDefinition(
"SiteColorPreference",
"red",
scopes: SettingScopes.User,
isVisibleToClients: true
)
};
}
}
В службах приложений и контроллерах вам не нужно вводить ISettingManager (поскольку свойство уже введено), и вы можете напрямую использовать свойство SettingManager. Например :
//Getting a boolean value (async call)
var value1 = await SettingManager.GetSettingValueAsync<bool>("PassiveUsersCanNotLogin");
А для других классов (например, доменных служб) можно внедрить ISettingManager
public class UserEmailer : ITransientDependency
{
private readonly ISettingManager _settingManager;
public UserEmailer(ISettingManager settingManager)
{
_settingManager = settingManager;
}
[UnitOfWork]
public virtual async Task TestMethod()
{
var settingValue = _settingManager.GetSettingValueForUser("SmtpServerAddress", tenantAdmin.TenantId, tenantAdmin.Id);
}
}
Примечание. Чтобы изменить параметр, вы можете использовать эти методы в диспетчере настроек ChangeSettingForApplicationAsync, ChangeSettingForTenantAsync и ChangeSettingForUserAsync.
person
Alper Ebicoglu
schedule
05.09.2017