public static IServiceCollection AddPostgreSQLBasedOnEF(this IServiceCollection serviceCollection, Action <PostgresConnectionOptions> action)
    {
        var connectionOptions = new PostgresConnectionOptions();

        action.Invoke(connectionOptions);

        serviceCollection.AddDbContext <PostgresDatabaseContext>(options => options
                                                                 .UseNpgsql(connectionOptions.ConnectionString)
                                                                 .UseQueryTrackingBehavior(
                                                                     connectionOptions.UseTracking ? QueryTrackingBehavior.TrackAll : QueryTrackingBehavior.NoTracking
                                                                     )
                                                                 );

        return(serviceCollection);
    }
        protected GeneralContext(PostgresConnectionOptions connectionOptions)
        {
            DatabaseName  = connectionOptions.DatabaseName;
            DatabaseOwner = connectionOptions.DatabaseOwner;

            PostgresConnectionString = $"server={connectionOptions.Server};" +
                                       $"userId={connectionOptions.UserId};" +
                                       $"password={connectionOptions.Password};" +
                                       $"Pooling={connectionOptions.Pooling};";

            if (string.IsNullOrEmpty(connectionOptions.SslMode) == false)
            {
                PostgresConnectionString += $"Sslmode={connectionOptions.SslMode};";
            }

            if (connectionOptions.TrustServerCertificate.HasValue)
            {
                PostgresConnectionString += $"Trust Server Certificate={connectionOptions.TrustServerCertificate};";
            }

            ConnectionString            = PostgresConnectionString + $"Database={connectionOptions.DatabaseName};";
            MaintenanceConnectionString = PostgresConnectionString + $"Database={connectionOptions.MaintenanceDatabase};";
        }