StringThing.Npgsql 0.1.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package StringThing.Npgsql --version 0.1.2
                    
NuGet\Install-Package StringThing.Npgsql -Version 0.1.2
                    
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="StringThing.Npgsql" Version="0.1.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="StringThing.Npgsql" Version="0.1.2" />
                    
Directory.Packages.props
<PackageReference Include="StringThing.Npgsql" />
                    
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 StringThing.Npgsql --version 0.1.2
                    
#r "nuget: StringThing.Npgsql, 0.1.2"
                    
#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 StringThing.Npgsql@0.1.2
                    
#: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=StringThing.Npgsql&version=0.1.2
                    
Install as a Cake Addin
#tool nuget:?package=StringThing.Npgsql&version=0.1.2
                    
Install as a Cake Tool

StringThing.Npgsql

Injection-safe interpolated SQL for PostgreSQL, built on Npgsql. Part of StringThing.

Install

dotnet add package StringThing.Npgsql

Quick start

var userId = 42;
PostgresSql stmt = $"SELECT name FROM users WHERE id = {userId}";
await using var command = stmt.ToCommand(dataSource);

Supported types

All standard .NET types (int, string, DateTime, Guid, etc.) plus Postgres-specific types: NpgsqlPoint, NpgsqlBox, NpgsqlRange<T>, NpgsqlTsVector, NpgsqlTsQuery, IPAddress, and more. See PostgresValue for the full list.

Nullable variants are supported. Reference types (string?, byte[]?, IPAddress?) map to NULL. Value types use PostgresValue?.

Fragments

var minAge = 18;
var status = "active";
PostgresFragment filter = $"age >= {minAge} AND status = {status}";

PostgresSql stmt = $"SELECT * FROM users WHERE {filter}";

Fragments compose. Parameters renumber automatically across fragment boundaries.

Multi-row insert

record InsertUser(int Id, string Name, string? Email) : IPostgresRow
{
    public PostgresFragment RowValues => $"({Id}, {Name}, {Email})";
}

var users = new InsertUser[] { new(1, "alice", "alice@example.com"), new(2, "bob", null) };
PostgresSql stmt = $"INSERT INTO users (id, name, email) VALUES {PostgresSql.InsertRows(users)}";

JSON

Implement IPostgresJson on your types to store them as jsonb. Use your choice of serializer:

record UserData(string Name, int Age) : IPostgresJson
{
    public string ToJson() => $$"""{"name":"{{Name}}","age":{{Age}}}""";
}

PostgresSql stmt = $"INSERT INTO data (payload) VALUES ({userData})";

Unsafe escape hatch

var tableName = Sql.Unsafe("users");
PostgresSql stmt = $"SELECT * FROM {tableName} WHERE id = {userId}";
Product Compatible and additional computed target framework versions.
.NET 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 (1)

Showing the top 1 NuGet packages that depend on StringThing.Npgsql:

Package Downloads
StringThing.Npgsql.Dapper

Dapper result mapping for StringThing.Npgsql. Injection-safe interpolated SQL on input, Dapper mapping on output. Dapper is bundled internally.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.2 59 5/31/2026
2.0.1 94 5/16/2026
2.0.0 93 5/15/2026
1.0.0 104 5/15/2026
0.1.2 110 4/12/2026
0.1.1 101 4/12/2026
0.1.0 106 4/12/2026