From cae3ec31c4ebd5a3912c056f6495999686a86a2a Mon Sep 17 00:00:00 2001 From: TekH Date: Tue, 25 Nov 2025 15:03:58 +0100 Subject: [PATCH] Add DI support for RecDbContext with configuration options Introduced a `DependencyInjection` class with an extension method `AddInfrastructureServices` to register `RecDbContext` using configurable `DbContextOptions`. Added a `ConfigurationOptions` class to encapsulate `DbContext` configuration. Validated that `DbContextOptionsAction` is provided before registration. Updated `ReC.Infrastructure.csproj` to include `Microsoft.Extensions.Configuration.Abstractions` for enhanced configuration support. Added necessary `using` directives. --- src/ReC.Infrastructure/DependencyInjection.cs | 31 +++++++++++++++++++ .../ReC.Infrastructure.csproj | 1 + 2 files changed, 32 insertions(+) create mode 100644 src/ReC.Infrastructure/DependencyInjection.cs diff --git a/src/ReC.Infrastructure/DependencyInjection.cs b/src/ReC.Infrastructure/DependencyInjection.cs new file mode 100644 index 0000000..0ab5890 --- /dev/null +++ b/src/ReC.Infrastructure/DependencyInjection.cs @@ -0,0 +1,31 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; + +namespace ReC.Infrastructure; + +public static class DependencyInjection +{ + public static IServiceCollection AddInfrastructureServices(this IServiceCollection services, Action options) + { + var configOpt = new ConfigurationOptions(); + options.Invoke(configOpt); + + if(configOpt.DbContextOptionsAction is null) + throw new InvalidOperationException("DbContextOptionsAction must be configured."); + + services.AddDbContext(configOpt.DbContextOptionsAction); + + return services; + } + + public class ConfigurationOptions + { + internal Action? DbContextOptionsAction { get; private set; } + + public ConfigurationOptions ConfigureDbContext(Action optionsAction) + { + DbContextOptionsAction = optionsAction; + return this; + } + } +} diff --git a/src/ReC.Infrastructure/ReC.Infrastructure.csproj b/src/ReC.Infrastructure/ReC.Infrastructure.csproj index 987f78b..5ce4d9b 100644 --- a/src/ReC.Infrastructure/ReC.Infrastructure.csproj +++ b/src/ReC.Infrastructure/ReC.Infrastructure.csproj @@ -8,6 +8,7 @@ +