Rig.TUnit.Databases.Sql
0.1.0-beta.2
dotnet add package Rig.TUnit.Databases.Sql --version 0.1.0-beta.2
NuGet\Install-Package Rig.TUnit.Databases.Sql -Version 0.1.0-beta.2
<PackageReference Include="Rig.TUnit.Databases.Sql" Version="0.1.0-beta.2" />
<PackageVersion Include="Rig.TUnit.Databases.Sql" Version="0.1.0-beta.2" />
<PackageReference Include="Rig.TUnit.Databases.Sql" />
paket add Rig.TUnit.Databases.Sql --version 0.1.0-beta.2
#r "nuget: Rig.TUnit.Databases.Sql, 0.1.0-beta.2"
#:package Rig.TUnit.Databases.Sql@0.1.0-beta.2
#addin nuget:?package=Rig.TUnit.Databases.Sql&version=0.1.0-beta.2&prerelease
#tool nuget:?package=Rig.TUnit.Databases.Sql&version=0.1.0-beta.2&prerelease
Rig.TUnit.Databases.Sql
Family-base package for SQL-database test fixtures: EF Core provider contract,
SqlContractsuite, transaction helpers,DbContextHelper<TContext>.
What this package is
The shared foundation for every SQL database provider Rig.TUnit ships
(MySql, Oracle, Postgresql, SqlServer, Sqlite). It defines
SqlRigBuilder<TSelf> with ReplaceDbContext<T>, the EF-agnostic
DbContextHelper<TContext>, InMemoryDbExtensions, and SQL-specific
assertions (RawSqlAssert). Also ships the SqlContract TUnit suite
([InheritsTests]) that leaf integration projects run to prove parity of
semantics across engines: transactions, concurrency tokens, migration
apply/rollback, and streaming result sets.
Install this one directly only when you are writing a new SQL provider or consuming provider-agnostic assertions.
When to use it
- Authoring a new SQL backend (DuckDB, SingleStore, …).
- Sharing test fixtures across multi-engine integration tests.
- Not for: concrete SQL testing — install one of the five leaf packages.
Prerequisites
- .NET 10 SDK
- Microsoft.EntityFrameworkCore 10.x
- The leaf provider's native client (Npgsql, Pomelo.MySql, Oracle.EFCore, etc.).
Quick start
using Rig.TUnit.Core.Builder;
using Rig.TUnit.Core.Helpers;
var rig = new RigBuilder()
.WithIsolation(IsolationKey.FromExecutionContext())
.Build();
await using var _ = rig;
Options
| Property | Type | Default | Description |
|---|---|---|---|
MigrationStrategy |
MigrationStrategy |
ApplyOnInit |
ApplyOnInit / SkipMigrations / EnsureCreated. |
CommandTimeoutSeconds |
int |
30 |
EF Database.SetCommandTimeout. |
EnableDetailedErrors |
bool |
true |
Turn on EnableDetailedErrors(). |
EnableSensitiveDataLogging |
bool |
true |
Turn on EnableSensitiveDataLogging(). |
Fixture + helper APIs
Rig.TUnit.Databases.Sql.Builder.SqlRigBuilder<TSelf>— CRTP builderRig.TUnit.Databases.Sql.Helpers.DbContextHelper<TContext>Rig.TUnit.Databases.Sql.Extensions.InMemoryDbExtensionsRig.TUnit.Databases.Sql.Assertions.RawSqlAssertRig.TUnit.Databases.Sql.Contracts.SqlContract— family TUnit suite
Per-test isolation
Each leaf provider materialises a fresh database/schema per test; strategy
varies (ephemeral DB, schema-per-test, or IsolationKey prefix). The base
contract suite relies on the per-test guarantee without assuming one
strategy.
Parallelism + performance
§9 — N/A: family-base; parallelism profile depends on the concrete
engine. Sqlite and Postgres are fully parallel; Oracle's session-setup cost
forces a lower Iterations value.
Troubleshooting
ModelBuildingerrors differ across engines — use provider-specificHasColumnTypecalls insideOnModelCreatingor guard withDatabase.IsSqlServer()/Database.IsNpgsql().
Provider quirks + edge cases
- SQL engines differ on: identity columns, RETURNING clauses, case folding, max identifier length (30 Oracle, 64 MySql, 63 Postgres, 128 SqlServer), and default isolation level. Contract tests normalise these.
Benchmarks
§12 — N/A: family-base. Concrete leaves have individual
Rig.TUnit.Benchmarks/*SqlBenchmarks.cs entries tracked in
benchmarks/baseline-005.json.
Related docs
License
MIT. See LICENSE.
| 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
- Bogus (>= 35.6.1)
- Microsoft.EntityFrameworkCore (>= 10.0.0)
- Microsoft.EntityFrameworkCore.InMemory (>= 10.0.0)
- Microsoft.EntityFrameworkCore.Relational (>= 10.0.0)
- Microsoft.Extensions.Caching.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Caching.Memory (>= 10.0.0)
- Microsoft.Extensions.Configuration (>= 10.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Logging (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Options (>= 10.0.0)
- Microsoft.Extensions.Options.DataAnnotations (>= 10.0.0)
- Rig.TUnit.Databases (>= 0.1.0-beta.2)
- TUnit.Core (>= 1.34.5)
NuGet packages (6)
Showing the top 5 NuGet packages that depend on Rig.TUnit.Databases.Sql:
| Package | Downloads |
|---|---|
|
Rig.TUnit.Databases.Sql.Oracle
TUnit fixture for Oracle Database (gvenzl/oracle-free) backed by Testcontainers. Per-test isolation and schema helpers for Oracle 23ai. |
|
|
Rig.TUnit.Databases.Sql.SqlServer
TUnit fixture for SQL Server backed by Testcontainers. Per-test isolation, schema bootstrapping, and assertions for SQL Server 2022+. |
|
|
Rig.TUnit.All
Meta-package containing every Rig.TUnit.* package. DISCOURAGED — prefer per-feature or per-stack meta-packages (Rig.TUnit, Rig.TUnit.Microservices). |
|
|
Rig.TUnit.Databases.Sql.Sqlite
TUnit fixture for SQLite - in-memory or file-based, no container required. The fastest tier of the SQL provider matrix. |
|
|
Rig.TUnit.Databases.Sql.Postgresql
TUnit fixture for PostgreSQL backed by Testcontainers. Per-test isolation, schema bootstrapping, and assertions for Postgres 16.x. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-beta.2 | 56 | 4/27/2026 |
| 0.0.0-alpha.0.14 | 50 | 4/26/2026 |