Sylin.Koan.Data.Connector.Postgres
1.0.9
See the version list below for details.
dotnet add package Sylin.Koan.Data.Connector.Postgres --version 1.0.9
NuGet\Install-Package Sylin.Koan.Data.Connector.Postgres -Version 1.0.9
<PackageReference Include="Sylin.Koan.Data.Connector.Postgres" Version="1.0.9" />
<PackageVersion Include="Sylin.Koan.Data.Connector.Postgres" Version="1.0.9" />
<PackageReference Include="Sylin.Koan.Data.Connector.Postgres" />
paket add Sylin.Koan.Data.Connector.Postgres --version 1.0.9
#r "nuget: Sylin.Koan.Data.Connector.Postgres, 1.0.9"
#:package Sylin.Koan.Data.Connector.Postgres@1.0.9
#addin nuget:?package=Sylin.Koan.Data.Connector.Postgres&version=1.0.9
#tool nuget:?package=Sylin.Koan.Data.Connector.Postgres&version=1.0.9
Sylin.Koan.Data.Connector.Postgres
PostgreSQL provider for Koan managed entities and existing relational data.
- Target framework: net10.0
- License: Apache-2.0
Capabilities
- Connection + health checks with minimal options
- JSON projection, filter, and paging pushdowns where supported
- Schema helpers (create table/index) via Koan.Data.Relational
- Provider-bounded Entity streams through
DataCaps.Query.ProviderBoundedPaging - Compact flat, structured, nested-path, composite-key, and generated-key maps
- Read-only fail-fast safety and non-creating
StorageLifecycle.External - Provider-neutral container inspection and bounded record sampling
- Registered parameterized SQL reads and scalars through provider-enforced read lanes
Install
The generated product surface owns support maturity. This page owns PostgreSQL behavior and limits; they do not imply parity with every relational backend.
dotnet add package Sylin.Koan.Data.Connector.Postgres
Minimal setup
- Keep the application's ordinary
services.AddKoan()bootstrap. - For autonomous local discovery, run a reachable PostgreSQL service and omit explicit configuration.
- Otherwise set
ConnectionStrings:PostgresorKoan:Data:Postgres:ConnectionString; keep secrets outside source control.
builder.Services.AddKoan();
public sealed class Order : Entity<Order>;
var saved = await new Order().Save();
var same = await Order.Get(saved.Id);
Connect an existing table without introducing a parallel data API:
builder.Services.AddKoan(koan => koan.Data
.Source("Legacy")
.Map<Customer>(map => map
.Container("CUSTOMER")
.Key(customer => customer.Id).Name("CUSTOMER_NO")
.Property(customer => customer.DisplayName).Name("DISPLAY_NM")
.Property(customer => customer.Profile).Object("PROFILE_JSON")));
using (EntityContext.Source("Legacy"))
{
var customer = await Customer.Get(7);
}
Set StorageLifecycle=External when Koan must validate but never create or repair the table. Set Access=ReadOnly
when writes must reject before provider mutation. Nested .Path("NAME_DATA", "full") updates preserve unbound values
inside the same jsonb object.
Explore or name a useful read without adding a second data API:
koan.Data.Source("Legacy").Query("customers.active", query => query
.Lane("Reports")
.Sql("select id as Id, name as Name from customers where active = @active")
.Parameter<bool>("active"));
var legacy = Data.Source("Legacy");
var active = await legacy.Query("customers.active", new { active = true });
var containers = await legacy.Inspect().Containers(100, null, ct);
Opaque SQL requires a configured read lane. PostgreSQL executes it in a native read-only transaction.
Usage - safe snippets
- Use first-class model statics from your entities:
Order.FirstPage(50, ct)/Order.Page(2, 50, ct)Order.Query(o => o.CustomerId == id, ct)await foreach (var o in Order.QueryStream(o => o.Total > 100, ct)) { ... }
// Stream a filtered set through consumer-paced provider pages
await foreach (var o in Order.QueryStream(o => o.IsActive, ct))
{
// process
}
Streaming boundary
AllStream and QueryStream request one numbered PostgreSQL page at a time. batchSize caps the
Koan-visible candidate page; it does not claim a bound for opaque provider-driver buffers. Streaming
orders by a portable scalar -- an enum, or an integral, decimal, floating, or temporal type -- with a
comparison that holds on any backend. Any other key still streams stably here, but PostgreSQL defines its
comparison rather than Koan, which records that as a runtime fact instead of refusing the query.
Data.Core separately appends the usual string Entity identifier as an opaque provider-stable
tie-break, not a cross-provider collation promise.
These streams do not provide snapshot consistency, mutation-safe traversal, resumability, or a public cursor. Concurrent writes can therefore cause skips or duplicates during offset-based traversal.
See TECHNICAL.md for options and pushdown coverage.
References
| Product | Versions 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. |
-
net10.0
- Microsoft.Extensions.Configuration (>= 10.0.10)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.10)
- Microsoft.Extensions.Configuration.EnvironmentVariables (>= 10.0.10)
- Microsoft.Extensions.Configuration.Json (>= 10.0.10)
- Microsoft.Extensions.DependencyInjection (>= 10.0.10)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Hosting (>= 10.0.10)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Logging (>= 10.0.10)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Logging.Console (>= 10.0.10)
- Microsoft.Extensions.Options (>= 10.0.10)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.10)
- Microsoft.Extensions.Options.DataAnnotations (>= 10.0.10)
- Newtonsoft.Json (>= 13.0.4)
- Npgsql (>= 10.0.3)
- Sylin.Koan.Core (>= 1.0.22 && < 2.0.0)
- Sylin.Koan.Data.Abstractions (>= 1.0.14 && < 2.0.0)
- Sylin.Koan.Data.Core (>= 1.0.32 && < 2.0.0)
- Sylin.Koan.Data.Relational (>= 1.0.20 && < 2.0.0)
- Sylin.Koan.Data.Relational.Npgsql (>= 1.0.16 && < 2.0.0)
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 |
|---|---|---|
| 1.0.24 | 39 | 8/30/2026 |
| 1.0.22 | 38 | 8/30/2026 |
| 1.0.21 | 45 | 8/28/2026 |
| 1.0.20 | 43 | 8/28/2026 |
| 1.0.19 | 39 | 8/28/2026 |
| 1.0.18 | 36 | 8/28/2026 |
| 1.0.17 | 42 | 8/28/2026 |
| 1.0.16 | 39 | 8/27/2026 |
| 1.0.10 | 91 | 8/25/2026 |
| 1.0.9 | 95 | 8/24/2026 |
| 1.0.7 | 88 | 8/23/2026 |
| 1.0.5 | 87 | 8/22/2026 |
| 1.0.2 | 98 | 8/20/2026 |
| 1.0.0 | 117 | 8/14/2026 |
| 0.21.1 | 88 | 8/14/2026 |
| 0.21.0 | 116 | 7/30/2026 |
| 0.20.4 | 114 | 7/23/2026 |
| 0.20.2 | 103 | 7/22/2026 |
| 0.20.1 | 156 | 7/22/2026 |
| 0.17.0 | 112 | 6/12/2026 |