using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; namespace RAIC.Extensions.Configuration.EntityFrameworkCore.Extensions; public static class ConfigurationBuilderExtensions { public delegate DbContextOptionsBuilder DbContextOptionsTransformer(DbContextOptionsBuilder transform) where T : DbContext; /// /// Adds a off as a configuration provider to the . /// /// Type of the which implements both and /// /// a which configures your . eg. /// /// dbContextOptions => dbContextOptions.UseNpgsql(builder.Configuration.GetConnectionString("Default")) /// /// /// The public static IConfigurationBuilder AddDbContext(this IConfigurationBuilder builder, DbContextOptionsTransformer optionsTransformer) where TDbContext : DbContext, ISettingsDbContext>, ISettingsDbContextFactory { var options = optionsTransformer(new DbContextOptionsBuilder()).Options; var configurationSource = new EntityFrameworkCoreDbSetConfigurationSource() { DbContextFactory = () => TDbContext.Create(options) }; return builder.Add(configurationSource); } }