Tracon.Sqlite 1.0.0-preview.3

Prefix Reserved
This is a prerelease version of Tracon.Sqlite.
dotnet add package Tracon.Sqlite --version 1.0.0-preview.3
                    
NuGet\Install-Package Tracon.Sqlite -Version 1.0.0-preview.3
                    
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="Tracon.Sqlite" Version="1.0.0-preview.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Tracon.Sqlite" Version="1.0.0-preview.3" />
                    
Directory.Packages.props
<PackageReference Include="Tracon.Sqlite" />
                    
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 Tracon.Sqlite --version 1.0.0-preview.3
                    
#r "nuget: Tracon.Sqlite, 1.0.0-preview.3"
                    
#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 Tracon.Sqlite@1.0.0-preview.3
                    
#: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=Tracon.Sqlite&version=1.0.0-preview.3&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Tracon.Sqlite&version=1.0.0-preview.3&prerelease
                    
Install as a Cake Tool

Tracon.Sqlite

SQLite persistence layer for Tracon.

For single-file setups: demos, embedded/edge scenarios, and testing with real SQL behavior beyond in-memory stores. Tables carry a configurable prefix (default tracon_) so they do not collide with the consumer's own tables; SQLite has no schema concept.

Setup

dotnet add package Tracon.Sqlite --prerelease
builder.AddTracon()
       .UseSqlite("Data Source=tracon.db");

In memory, testing only:

builder.AddTracon()
       .UseSqlite("Data Source=:memory:");   // LIMIT: data is lost when the connection closes

With settings:

builder.AddTracon()
       .UseSqlite(options =>
       {
           options.ConnectionString = "Data Source=tracon.db";
           options.TablePrefix = "tracon_";
           options.CommandTimeoutSeconds = 30;
           options.AutoApplyMigrations = true;
       });

Sharing a data source

Give DataSource instead of ConnectionString when your host already owns a DbDataSource for the same database file and you want Tracon using that same instance:

options.DataSource = yourDbDataSource;   // ConnectionString is then not required

Tracon never disposes an instance it did not build; the caller keeps ownership. Microsoft.Data.Sqlite does not itself offer a DbDataSource implementation, so this is for a DbDataSource adapter you write yourself — see Tracon.PostgreSql's https://tracon.dev/guides/ef-core/ for the pattern.

SQLite's real limits

These are not hidden; they are reported in this README and in the /api/meta output.

Limit Consequence
Single writer Concurrent writes serialize. At high run volume, run_events writes become a bottleneck
WAL required Set automatically on connection open; cannot be disabled
busy_timeout Set to 5000 ms
Weak type system No datetimeoffset, no uuid, no decimal — all encoded as text/number
No network Single-process; cannot be used in a multi-instance deployment
No SKIP LOCKED The job queue (RunWorker) runs with a single worker; cannot be multi-instance

These limits do not make SQLite bad; using it in the wrong place does.

Migrations

Embedded .sql files are applied automatically at application startup. The lock carries no sp_getapplock/pg_advisory_lock equivalent — it is protected by a sidecar file lock (<database-file>.tracon-migration-lock). The lock is skipped for :memory: databases (another process cannot share the same connection anyway).

options.AutoApplyMigrations = false;

Migration numbers are per provider; they do not, and need not, line up with Tracon.PostgreSql or Tracon.SqlServer.

Read contract view

Set EnableReadViews = true to publish {prefix}runs_v1 (no separating dot — SQLite has no schema concept), a narrow, versioned, read-only view over run data — query it with your own SQL or map it as an EF Core keyless entity, without depending on the internal runs table shape. Off by default; a deployment that never turns it on never sees the object. See Read contract views for the column list and the compatibility rule.

AOT

This package's AOT status is not measured. SQLitePCLRaw carries a native library; this typically affects publish behavior. Use Tracon.PostgreSql for setups that require AOT.

Two providers at once

If UsePostgreSql(), UseSqlServer(), and UseSqlite() are called in the same chain, the last registration wins and a warning is logged at startup. This is a configuration error; call only one.

Licence: PolyForm Small Business 1.0.0 - free below 100 people and 1,000,000 USD (2019, inflation adjusted) revenue; a commercial licence applies above that. Terms ship in the package as LICENSE.md. Details: https://tracon.dev/reference/licensing/

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.0-preview.3 41 9/24/2026
1.0.0-preview.2 79 9/20/2026
1.0.0-preview.1 59 9/20/2026