Я написал расширение для ServiceCollection
, в котором я хочу настроить свою конфигурацию Core EntityFramework Core и соответствующий DbContext.Загрузка конфигурации через json-файл работает.Теперь, где я борюсь, это то, что я хочу сопоставить свой IInstanceConfiguration
с моим OracleConfiguration
, как полный экземпляр.Мое текущее решение выглядит следующим образом.Я добавил два комментария, где я хотел бы знать правильный (/ лучший) способ реализации этого.
С уважением!
public static void RegisterEfCoreOracle<T>(this IServiceCollection services, string configurationDirectory, string configurationFile) where T : DbContext
{
//Adding configuration file
IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(configurationDirectory)
.AddJsonFile(configurationFile, optional: false)
.Build();
services.Configure<OracleConfiguration>(configuration);
//Do i really have to do it manually this way? What would be another, elegant way?
var oraInstance = new OracleConfiguration(configuration.GetValue<string>("Name"), configuration.GetValue<string>("DataSource"), configuration.GetValue<string>("UserId"),
configuration.GetValue<string>("Password"),configuration.GetValue<bool>("UseConsoleLogging"), configuration.GetValue<string>("Compatibility"));
//This is the line where I am struggling.
services.AddSingleton<IInstanceConfiguration, OracleConfiguration>(oraInstance);
var oraConfig = services.ReturnServiceProvider().GetRequiredService<OracleConfiguration>();
services.AddDbContext<T>();
}
public static ServiceProvider ReturnServiceProvider(this IServiceCollection services) => services.BuildServiceProvider();