IOptionMonitor - выдать событие изменения - PullRequest
0 голосов
/ 10 ноября 2019

Базовое приложение asp.net имеет IOptions, настроенные из двух источников: (a) appsetting.json и (b) database

Я переопределяю значения из appsetting.json значениями в базе данных. Теперь я хочу позволить пользователю на лету редактировать значения для определенных предопределенных настроек (которые сохраняются в базе данных), например, включить трассировку стека для временной отладки некоторых проблем в производственной среде.

Во время инициализации приложения я перезаписываю значения в базе данныхиспользуя IconfigureOptions, как показано здесь

public class HostingOptionSetupService : IConfigureOptions<HostingOption>
{

    private readonly AppDbContext _dbContext;
    public AvailabilitySearchOptionsSetupService(AppDbContext dbContext)
    {
        this._dbContext = dbContext;
    }

    public void Configure(AvailabilitySearchOptions options)
    {
        var json = ConvertToJsonString(_dbContext.AppSetting.ToList());
        JsonConvert.PopulateObject(options, json);
    }
}

Но теперь, когда пользователь изменяет значения и сохраняет их в базе данных, как я могу инициировать повторное связывание? Как использовать IOptionsMonitor при изменении базы данных ??

1 Ответ

0 голосов
/ 11 ноября 2019

Чтобы решить эту проблему, я ввел IConfigureOptions в сервис, который сохраняет изменения в базе данных. И затем вызывается configureOptions.Configure() после dbContext.SaveChanges, который применяет изменения.

...