redb.Postgres.Pro
4.4.2
Prefix Reserved
dotnet add package redb.Postgres.Pro --version 4.4.2
NuGet\Install-Package redb.Postgres.Pro -Version 4.4.2
<PackageReference Include="redb.Postgres.Pro" Version="4.4.2" />
<PackageVersion Include="redb.Postgres.Pro" Version="4.4.2" />
<PackageReference Include="redb.Postgres.Pro" />
paket add redb.Postgres.Pro --version 4.4.2
#r "nuget: redb.Postgres.Pro, 4.4.2"
#:package redb.Postgres.Pro@4.4.2
#addin nuget:?package=redb.Postgres.Pro&version=4.4.2
#tool nuget:?package=redb.Postgres.Pro&version=4.4.2
RedBase Pro
Data Platform for .NET — the Pro engine of RedBase: SQL built in C#, a query planner, parallel materialization.
RedBase Pro replaces the query engine of the open-source RedBase core. The API is
the same: a project moves from Free to Pro by changing the packages and AddRedb to AddRedbPro.
Contents: Free and Pro · Packages · Quick Start · New in 4.4 · Supported Databases · Documentation · License
Free and Pro
Both editions take the same LINQ API: filters, nested fields, arrays and dictionaries, arithmetic, Sql.Function<T>(),
aggregation, GroupBy, window functions, trees, lists, users and permissions. They differ in how a query runs.
| Free | Pro | |
|---|---|---|
| Query engine | SQL functions of the module installed in the database (PL/pgSQL, T-SQL, a native loadable extension on SQLite) | SQL built in C# by the provider and sent as one statement |
| Materialization of Props | sequential | parallel |
Query planner (EnablePvtPrefilter) |
no | yes, on by default: the streams form reads a page, a count or an aggregate without pivoting every object of the scheme |
PropsSaveStrategy.ChangeTracking |
no (DeleteInsert only) |
yes: a save writes only the values that changed |
| Data migrations of Props classes | no | IRedbMigration<T>, MigrateAsync, AddRedbMigrations() |
Distinct() |
by object | one object per Props hash |
| SQLite | needs the native extension | pure C#: Blazor WebAssembly and mobile (MAUI) |
Free: LINQ → SQL module in the database → rows as JSON → Props
Pro: LINQ → SQL built in C# → rows → Props, materialized in parallel
Packages
dotnet add package redb.Postgres.Pro # or redb.MSSql.Pro, redb.SQLite.Pro
Each provider package brings redb.Core.Pro as a transitive dependency.
Quick Start
using redb.Core;
using redb.Core.Models.Configuration;
using redb.Core.Pro.Extensions; // AddRedbPro
using redb.Postgres.Pro.Extensions; // UsePostgres; or redb.MSSql.Pro.Extensions, redb.SQLite.Pro.Extensions
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRedbPro(options => options
.UsePostgres("Host=localhost;Database=mydb;Username=postgres;Password=pass")
// .UseMsSql("Server=localhost;Database=mydb;User Id=sa;Password=pass;TrustServerCertificate=true")
// .UseSqlite("Data Source=app.db")
.Configure(c =>
{
c.PropsSaveStrategy = PropsSaveStrategy.ChangeTracking;
c.EnablePropsCache = true;
}));
var app = builder.Build();
var redb = app.Services.GetRequiredService<IRedbService>();
await redb.InitializeAsync();
var results = await redb.Query<EmployeeProps>()
.Where(e => e.Salary > 75000m)
.Take(100)
.ToListAsync();
// Window functions — from E132_WindowRowNumber.cs
var ranked = await redb.Query<EmployeeProps>()
.WithWindow(w => w
.PartitionBy(x => x.Department)
.OrderByDesc(x => x.Salary))
.SelectAsync(x => new
{
Name = x.Props.FirstName,
Department = x.Props.Department,
Salary = x.Props.Salary,
Rank = Win.RowNumber()
});
New in 4.4
Pro query engine:
- A window with
Take,SkipandOrderByreturns the page; the window is computed over the whole filtered set on the fields it needs, and the other selected fields are read only for the rows returned. The same holds over a tree (TreeQuery(...).Take(...).WithWindow(...)), andWin.Ntile(n)over a tree usesn. AnyAsyncover a tree stops at the first matching node.DistinctByover a tree is faster on SQL Server and SQLite;DistinctBykeeps the ordering of the query, andCountAsyncafterDistinctBycounts the keys.
Both editions (core):
- Schema work at start-up and scheme synchronization run under a schema lock, so nodes sharing one database start
together (
SchemaLockTimeout). IRedbService.SchemaProblemsandCheckSchemaAsync()report problems of the schema that need a person, for a health check.- The tree services read a subtree or a chain of ancestors in one statement; several tree filters in one query all apply.
The full list is in CHANGELOG.md; what to check when upgrading is in UPGRADING.md.
Free — no license key
All Pro features work out of the box — no license key required (starting from version 3.3.0). Install the Pro packages and use them, in development and in production alike. Pro is proprietary (closed-source) software, distributed free of charge.
Supported Databases
| Database | Version | Package |
|---|---|---|
| PostgreSQL | 14+ | redb.Postgres.Pro |
| SQL Server | 2019+ | redb.MSSql.Pro |
| SQLite | 3.44+ | redb.SQLite.Pro — pure C#, runs in Blazor WebAssembly & mobile (MAUI) |
Target frameworks: .NET 8.0 (LTS), .NET 9.0, .NET 10.0.
Documentation
| Resource | Link |
|---|---|
| Website & Docs | redbase.app |
| Architecture (deep dive) | redbase.app/architecture |
| RedBase (Free edition, full API) | README.md |
| Upgrading | UPGRADING.md |
| Changelog | CHANGELOG.md |
License
RedBase Pro is proprietary software (closed-source), distributed free of charge — no license key required starting
from version 3.3.0. The license terms (LICENSE-PRO.txt) ship in every Pro package.
| Product | Versions 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 is compatible. 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. |
-
net10.0
- BCrypt.Net-Next (>= 4.2.1)
- Microsoft.Extensions.Caching.Memory (>= 10.0.13)
- Microsoft.Extensions.Configuration (>= 10.0.13)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.13)
- Microsoft.Extensions.DependencyInjection (>= 10.0.13)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Logging.Console (>= 10.0.13)
- Microsoft.Extensions.Options (>= 10.0.13)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.13)
- Microsoft.IdentityModel.Abstractions (>= 8.23.0)
- Microsoft.IdentityModel.Logging (>= 8.23.0)
- Microsoft.IdentityModel.Tokens (>= 8.23.0)
- Npgsql (>= 10.0.3)
- redb.Core (>= 4.4.2)
- redb.Core.Pro (>= 4.4.2)
- redb.Postgres (>= 4.4.2)
- System.IdentityModel.Tokens.Jwt (>= 8.23.0)
-
net8.0
- BCrypt.Net-Next (>= 4.2.1)
- Microsoft.Extensions.Caching.Memory (>= 10.0.13)
- Microsoft.Extensions.Configuration (>= 10.0.13)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.13)
- Microsoft.Extensions.DependencyInjection (>= 10.0.13)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Logging.Console (>= 10.0.13)
- Microsoft.Extensions.Options (>= 10.0.13)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.13)
- Microsoft.IdentityModel.Abstractions (>= 8.23.0)
- Microsoft.IdentityModel.Logging (>= 8.23.0)
- Microsoft.IdentityModel.Tokens (>= 8.23.0)
- Npgsql (>= 10.0.3)
- redb.Core (>= 4.4.2)
- redb.Core.Pro (>= 4.4.2)
- redb.Postgres (>= 4.4.2)
- System.IdentityModel.Tokens.Jwt (>= 8.23.0)
-
net9.0
- BCrypt.Net-Next (>= 4.2.1)
- Microsoft.Extensions.Caching.Memory (>= 10.0.13)
- Microsoft.Extensions.Configuration (>= 10.0.13)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.13)
- Microsoft.Extensions.DependencyInjection (>= 10.0.13)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Logging.Console (>= 10.0.13)
- Microsoft.Extensions.Options (>= 10.0.13)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.13)
- Microsoft.IdentityModel.Abstractions (>= 8.23.0)
- Microsoft.IdentityModel.Logging (>= 8.23.0)
- Microsoft.IdentityModel.Tokens (>= 8.23.0)
- Npgsql (>= 10.0.3)
- redb.Core (>= 4.4.2)
- redb.Core.Pro (>= 4.4.2)
- redb.Postgres (>= 4.4.2)
- System.IdentityModel.Tokens.Jwt (>= 8.23.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on redb.Postgres.Pro:
| Package | Downloads |
|---|---|
|
redb.Tsak.Core
Kernel of redb.Tsak — runtime container for redb.Route contexts. Provides hot-reload module loading, REST management API, scheduler, monitoring, security and pluggable cluster bootstrap. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.4.2 | 68 | 10/23/2026 |
| 4.4.1 | 83 | 10/21/2026 |
| 4.3.0 | 158 | 10/14/2026 |
| 4.2.2 | 169 | 10/5/2026 |
| 4.2.0 | 162 | 9/30/2026 |
| 4.1.1 | 167 | 9/24/2026 |
| 4.1.0 | 168 | 9/21/2026 |
| 4.0.1 | 161 | 9/18/2026 |
| 4.0.0 | 193 | 9/11/2026 |
| 3.7.2 | 211 | 8/26/2026 |
| 3.7.1 | 180 | 8/26/2026 |
| 3.6.0 | 179 | 8/13/2026 |
| 3.5.0 | 215 | 8/6/2026 |
| 3.4.0 | 198 | 7/27/2026 |
| 3.3.3 | 235 | 7/16/2026 |
| 3.3.0 | 479 | 7/8/2026 |
| 3.2.0 | 204 | 6/29/2026 |
| 3.0.0 | 223 | 5/29/2026 |