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);
            }
        }
示例#2
0
        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);
            }
        }