SharpCoreDB.Functional
1.9.8
See the version list below for details.
dotnet add package SharpCoreDB.Functional --version 1.9.8
NuGet\Install-Package SharpCoreDB.Functional -Version 1.9.8
<PackageReference Include="SharpCoreDB.Functional" Version="1.9.8" />
<PackageVersion Include="SharpCoreDB.Functional" Version="1.9.8" />
<PackageReference Include="SharpCoreDB.Functional" />
paket add SharpCoreDB.Functional --version 1.9.8
#r "nuget: SharpCoreDB.Functional, 1.9.8"
#:package SharpCoreDB.Functional@1.9.8
#addin nuget:?package=SharpCoreDB.Functional&version=1.9.8
#tool nuget:?package=SharpCoreDB.Functional&version=1.9.8
SharpCoreDB.Functional
Functional facade for SharpCoreDB.
Version: v1.9.5
Package: SharpCoreDB.Functional
Patch updates in v1.9.5
- ✅ Parameterized query binding fixed (Issue #336): named-parameter binding is token-aware, so parameter names that are prefixes of others (e.g.
@tvs@tid) no longer corrupt the SQL. - ✅ Server parameter pass-through fixed (Issue #337):
request.Parametersare forwarded on gRPC, the binary (PostgreSQL) protocol and WebSocket. - ✅ ULID encoding is now standards-compliant: ULIDs follow the official Crockford Base32 spec and are interchangeable with Python/Java/Go implementations.
- ✅ NuGet dependencies updated to their latest stable versions.
- ✅ Aligned package metadata and version references to the synchronized 1.9.5 release line.
- ✅ Release automation now publishes all packable SharpCoreDB packages in CI/CD.
- Core types:
Option<T>,Fin<T>,Seq<T>, andUnit - Functional query/command style extensions over
DatabaseandIDatabase - Works as base module for Dapper and EF Core functional adapters
Changes in v1.9.5
- Functional package introduced and aligned to
v1.9.5 - Documentation aligned with modular adapter ecosystem
- Maintains optional architecture with transitive dependency flow
Installation
dotnet add package SharpCoreDB.Functional --version 1.9.5
Related packages
SharpCoreDB.Functional.DapperSharpCoreDB.Functional.EntityFrameworkCore
Documentation
docs/INDEX.md
MVP API
Database.Functional()/IDatabase.Functional()entry pointsGetByIdAsync<T>(...) -> Task<Option<T>>FindOneAsync<T>(...) -> Task<Option<T>>QueryAsync<T>(...) -> Task<Seq<T>>InsertAsync<T>(...) -> Task<Fin<Unit>>UpdateAsync<T>(...) -> Task<Fin<Unit>>DeleteAsync(...) -> Task<Fin<Unit>>CountAsync(...) -> Task<long>
Functional SQL Syntax (v1.9.5)
The functional facade supports SQL extensions that map directly to Option<T> behavior.
Example
SELECT Id, Name, Email OPTIONALLY FROM Users
WHERE Email IS SOME;
Execute from C#
var fdb = database.Functional();
var users = await fdb.ExecuteFunctionalSqlAsync<UserDto>(
"SELECT Id, Name, Email OPTIONALLY FROM Users WHERE Email IS SOME");
Supported keywords
OPTIONALLY FROMIS SOMEIS NONEMATCH SOME <column>MATCH NONE <column>UNWRAP <column> AS <alias> [DEFAULT '<value>']
Verification tests
dotnet test tests/SharpCoreDB.Functional.Tests --filter "FullyQualifiedName~FunctionalSqlSyntaxTests"
Source: tests/SharpCoreDB.Functional.Tests/FunctionalSqlSyntaxTests.cs
Chaining example
var dbf = database.Functional();
var result = await dbf
.GetByIdAsync<User>(Tables.Users, userId, cancellationToken: ct)
.Map(opt => opt.Map(user => user with { LastSeenUtc = DateTime.UtcNow }))
.Map(opt => opt.ToFin(Errors.UserNotFound));
result.Match(
Succ: _ => Console.WriteLine("updated"),
Fail: err => Console.WriteLine(err.Message));
| 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.DependencyInjection (>= 10.0.11)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Logging (>= 10.0.11)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.11)
- Microsoft.Extensions.ObjectPool (>= 10.0.11)
- SharpCoreDB (>= 1.9.8)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on SharpCoreDB.Functional:
| Package | Downloads |
|---|---|
|
SharpCoreDB.Data.Provider
Data provider layer for SharpCoreDB on .NET 10. |
|
|
SharpCoreDB.Functional.Dapper
Dapper adapter for SharpCoreDB.Functional with zero-dependency Option/Fin APIs and fluent functional composition for .NET 10 and C# 14. |
|
|
SharpCoreDB.Functional.EntityFrameworkCore
Entity Framework Core adapter for SharpCoreDB.Functional with zero-dependency Option/Fin APIs and fluent functional composition for .NET 10 and C# 14. |
|
|
SharpCoreDB.Functional.Linq2DB
Production-ready linq2db adapter for SharpCoreDB.Functional. Zero-dependency Option/Fin/Seq APIs, compile-time LINQ safety, BulkCopy batching, full type mappings (ULID/GUID), and low-overhead queries. Perfect for AI/agentic and GraphRAG workloads on .NET 10 / C# 14. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.0.0-preview.2 | 0 | 8/30/2026 |
| 2.0.0-preview.1 | 29 | 8/29/2026 |
| 1.9.8 | 41 | 8/29/2026 |
| 1.9.7 | 63 | 8/29/2026 |
| 1.9.6 | 95 | 8/28/2026 |
| 1.9.5 | 101 | 8/27/2026 |
| 1.9.4 | 167 | 8/22/2026 |
| 1.9.3 | 223 | 7/28/2026 |
| 1.9.2 | 233 | 6/7/2026 |
| 1.9.1 | 178 | 5/21/2026 |
| 1.9.0 | 161 | 5/20/2026 |
| 1.8.0 | 201 | 4/29/2026 |
| 1.7.2 | 196 | 4/28/2026 |
| 1.7.1 | 172 | 4/26/2026 |
| 1.6.0 | 240 | 3/23/2026 |
v1.9.7: Fixes the WHERE IN (...) regression (#340) for SQLite VALUES lists, tuple rows, multi-value parameters and OR-chained predicates; ExecuteNonQuery now returns real affected-row counts via IDatabase.GetLastChanges(); single-file (.scdb) mode now encrypts block data with AES-256-GCM when DatabaseOptions.EncryptionKey is set (#341) and wrong keys are rejected. Includes all v1.9.6 fixes (the critical WHERE IN (#339) regression that silently returned ALL rows: IN / NOT IN evaluated correctly across single-file and directory mode, single-file parameterized queries normalize @-prefixed parameter names, token-aware parameter binding, server parameter pass-through, standards-compliant ULID encoding, updated dependencies).