Skip to content

Instantly share code, notes, and snippets.

@shahabganji
Last active January 2, 2022 14:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shahabganji/01612bcf8d05accb082d9baa3241cb90 to your computer and use it in GitHub Desktop.
Save shahabganji/01612bcf8d05accb082d9baa3241cb90 to your computer and use it in GitHub Desktop.
Blog: Custom Configuration Providers in ASP.NET Core
public class SqlServerConfigurationProvider : ConfigurationProvider , IDisposable
{
private readonly SqlServerConfigurationSource _configurationSource;
public SqlServerConfigurationProvider(SqlServerConfigurationSource configurationSource)
{
_configurationSource = configurationSource;
}
public override void Load()
{
// here you should connect to sql server and fetch the configurations
}
public void Dispose()
{
// cleanup all the resources
}
}
public class SqlServerConfigurationSource : IConfigurationSource
{
public string Server { get; set; } = "localhost";
public string Database { get; set; } = "ConfigurationDb";
public string User { get; set; } = "sa";
public string Password { get; set; } = "yourStrong(!)Password";
public string Table { get; set; } = "dbo.Configuration";
public string KeyColumn { get; set; } = "Key";
public string ValueColumn { get; set; } = "Value";
public IConfigurationProvider Build(IConfigurationBuilder builder)
=> new SqlServerConfigurationProvider(this);
}
CREATE TABLE dbo.Configuration(
[Key] NVarChar(50) NOT NULL PRIMARY KEY
, [Value] NVarCHar(50) NOT NULL
)
GO
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(configure =>
{
configure.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
configure.AddSqlServerDb();
})
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment