public void AddServices(IServiceCollection services) { services.AddSingleton <IStorage, PostgreSqlStorage>(); services.AddScoped <IStorageConnection, PostgreSqlStorageConnection>(); services.AddScoped <ICapPublisher, CapPublisher>(); services.AddTransient <ICallbackPublisher, CapPublisher>(); services.AddTransient <IAdditionalProcessor, DefaultAdditionalProcessor>(); var postgreSqlOptions = new PostgreSqlOptions(); _configure(postgreSqlOptions); if (postgreSqlOptions.DbContextType != null) { services.AddSingleton(x => { using (var scope = x.CreateScope()) { var provider = scope.ServiceProvider; var dbContext = (DbContext)provider.GetService(postgreSqlOptions.DbContextType); postgreSqlOptions.ConnectionString = dbContext.Database.GetDbConnection().ConnectionString; return(postgreSqlOptions); } }); } else { services.AddSingleton(postgreSqlOptions); } }
private void AddSingletonPostgreSqlOptions(IServiceCollection services) { var postgreSqlOptions = new PostgreSqlOptions(); _configure(postgreSqlOptions); if (postgreSqlOptions.DbContextType != null) { services.AddSingleton(x => { using (var scope = x.CreateScope()) { var provider = scope.ServiceProvider; var dbContext = (DbContext)provider.GetService(postgreSqlOptions.DbContextType); postgreSqlOptions.ConnectionString = dbContext.Database.GetDbConnection().ConnectionString; return(postgreSqlOptions); } }); } else { services.AddSingleton(postgreSqlOptions); } }