Regira.DAL.PostgreSQL 6.3.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Regira.DAL.PostgreSQL --version 6.3.0
                    
NuGet\Install-Package Regira.DAL.PostgreSQL -Version 6.3.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Regira.DAL.PostgreSQL" Version="6.3.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Regira.DAL.PostgreSQL" Version="6.3.0" />
                    
Directory.Packages.props
<PackageReference Include="Regira.DAL.PostgreSQL" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Regira.DAL.PostgreSQL --version 6.3.0
                    
#r "nuget: Regira.DAL.PostgreSQL, 6.3.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Regira.DAL.PostgreSQL@6.3.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Regira.DAL.PostgreSQL&version=6.3.0
                    
Install as a Cake Addin
#tool nuget:?package=Regira.DAL.PostgreSQL&version=6.3.0
                    
Install as a Cake Tool

Regira DAL — PostgreSQL

Regira DAL.PostgreSQL provides PostgreSQL backup/restore via pg_dump/pg_restore (settings, options, and backup/restore services — no CRUD or communicator surface).

Projects

Project Package Backend CRUD Backup / Restore
DAL.PostgreSQL Regira.DAL.PostgreSQL PostgreSQL ✓ (pg_dump)

Installation

<PackageReference Include="Regira.DAL.PostgreSQL" Version="6.*" />

PgSettings

Property Type Description
Host string Hostname
DatabaseName string Target database
Username string? Auth username
Password string? Auth password
Port string Default "5432"
var settings = new PgSettings("localhost", "mydb", "postgres", "pass");

PgBackupService / PgRestoreService

Requires pg_dump / pg_restore executables. Supports schema-specific backups.

var settings = new PgSettings("localhost", "mydb", "postgres", "pass");
IProcessHelper processHelper = new ProcessHelper();   // Regira.System

var options = new PgOptions
{
    DbSettings     = settings,
    ToolsDirectory = "/usr/lib/postgresql/16/bin",
    BackupSchemas  = ["public", "reports"],
    Overwrite      = true
};

IMemoryFile backup = await new PgBackupService(options, processHelper).Backup();
await new PgRestoreService(options, processHelper).Restore(backup);

Both services start pg_dump / pg_restore directly, without a shell in between, so they run on Windows, Linux and macOS alike, and a database, user or schema name reaches the tool exactly as written. An IProcessHelper of your own sees ExecuteFile rather than ExecuteCommand.

The password reaches the tools through the process environment (PGPASSWORD), never through the arguments — ProcessHelper sets it on the process itself. A custom IProcessHelper has to override the environment overload of ExecuteFile to pass it on; the default implementation throws NotSupportedException rather than start the tool without it.

PgOptions

Property Type Description
DbSettings PgSettings? Connection details, or use ConnectionString
ConnectionString string? Alternative to DbSettings
ToolsDirectory string Where pg_dump / pg_restore live
BackupSchemas ICollection<string>? Backup these schemas only — each name matched exactly, case and all; a schema that does not exist fails the backup
Overwrite bool Replace the target database if it exists
MaintenanceDatabase string? Database to create/drop from, default postgres

Restore creates the target database itself, connecting to MaintenanceDatabase to do so — CREATE DATABASE cannot run from a connection to the database it creates. When the target already exists, Overwrite drops and recreates it (so anything the backup does not contain is lost) and without Overwrite the restore fails. PostgreSQL refuses to drop a database while other sessions are connected to it. That connection never joins an ambient TransactionScope, inside which PostgreSQL refuses to create or drop a database.

The three database operations are also available on their own, against a connection to any other database on the same server:

bool exists = await pgRestore.Exists(connection, "staging-db");
await pgRestore.Drop(connection, "staging-db");
await pgRestore.Create(connection, "staging-db");

BackupRestoreManager

Standalone manager — useful when you want both backup and restore from the same object.

var settings = new PgSettings("localhost", "mydb", "postgres", "pass");
var options  = new PgOptions { DbSettings = settings, ToolsDirectory = "/usr/lib/postgresql/16/bin" };
IProcessHelper processHelper = new ProcessHelper();   // Regira.System

var mgr = new BackupRestoreManager(processHelper, options);
mgr.Backup(settings, "source-db", "/backups/snapshot.dump");   // synchronous (void)
// overwrite: drops target-db and recreates it from the backup
await mgr.Restore(settings, "target-db", "/backups/snapshot.dump", overwrite: true);

Backup/Restore contracts

Both services implement the shared contracts from Common:

public interface IDbBackupService  { Task<IMemoryFile> Backup(); }
public interface IDbRestoreService { Task Restore(IMemoryFile file); }

Overview

  1. Index — Settings, backup/restore, and BackupRestoreManager
  2. Examples — Schema-specific backup, copying a database, managing it yourself

License

Apache License 2.0 — this package contains no license validation and no runtime limits. See LICENSE. A few companion packages are commercially licensed with a free tier; see the licensing overview.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
6.3.1 34 9/17/2026
6.3.0 41 9/16/2026
6.2.1 107 9/5/2026
6.1.3 132 8/26/2026
6.1.2 136 8/16/2026
6.1.1 110 8/12/2026
6.1.0 115 8/10/2026