Skip to content

Commit 31d087c

Browse files
Connections / interceptors optimization
1 parent 70869f0 commit 31d087c

16 files changed

+526
-262
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,10 @@ jobs:
1919
uses: actions/setup-dotnet@v4
2020
with:
2121
dotnet-version: '10.0.x'
22+
cache: true
2223

2324
- name: Restore dependencies
24-
run: dotnet restore
25+
run: dotnet restore EntityFrameworkCore.Sqlite.Concurrency.sln
2526

2627
- name: Build
2728
run: dotnet build --configuration Release --no-restore

.github/workflows/deploy.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ jobs:
3030
uses: actions/setup-dotnet@v4
3131
with:
3232
dotnet-version: '10.0.x'
33+
cache: true
3334

3435
- name: Get Version
3536
id: get_version
@@ -45,7 +46,7 @@ jobs:
4546
fi
4647
4748
- name: Restore dependencies
48-
run: dotnet restore EntityFrameworkCore.Sqlite.Concurrency/EFCore.Sqlite.Concurrency.csproj
49+
run: dotnet restore EntityFrameworkCore.Sqlite.Concurrency.sln
4950

5051
- name: Build
5152
run: dotnet build EntityFrameworkCore.Sqlite.Concurrency/EFCore.Sqlite.Concurrency.csproj -c Release --no-restore
Lines changed: 60 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,94 @@
11
<Project Sdk="Microsoft.NET.Sdk">
2+
23
<PropertyGroup>
34
<TargetFramework>net10.0</TargetFramework>
45
<ImplicitUsings>enable</ImplicitUsings>
56
<Nullable>enable</Nullable>
7+
<RootNamespace>EntityFrameworkCore.Sqlite.Concurrency</RootNamespace>
68

79
<!-- Core Package Identity -->
810
<PackageId>EntityFrameworkCore.Sqlite.Concurrency</PackageId>
9-
<RootNamespace>EntityFrameworkCore.Sqlite.Concurrency</RootNamespace>
10-
<Version>10.0.1</Version>
11+
<Version>10.0.2</Version>
1112

12-
<!-- SEO-Optimized Metadata - PERFORMANCE FIRST -->
13-
<Title>EntityFrameworkCore.Sqlite.Concurrency - 10x Faster SQLite for EFCore with Parallel Reads &amp; No Lock Errors</Title>
14-
<Company>Cornerstone Code</Company>
13+
<!-- Core Metadata for Trust & Recognition -->
1514
<Authors>Mike Gotfryd</Authors>
15+
<Company>Cornerstone Code</Company>
16+
<Copyright>© 2026 Cornerstone Code. All rights reserved.</Copyright>
1617

17-
<!-- SEO Primary Description: Performance as Lead Benefit -->
18-
<Description>High-performance Entity Framework Core extension for SQLite with 10x faster bulk inserts and true parallel reads. Eliminate "database is locked" errors (SQLITE_BUSY) with automatic thread-safe concurrency management for .NET 10. Production-ready performance optimization that fixes SQLite's limitations while delivering enterprise-grade speed and reliability.</Description>
19-
20-
<!-- Comprehensive Tags for Search - Performance Terms First -->
21-
<PackageTags>SQLite; performance; high-performance; bulk insert; parallel reads; EntityFrameworkCore; EFCore; Entity Framework Core; concurrency; thread-safe; database locked; SQLITE_BUSY; multi-threading; .NET 10; dotnet; Entity Framework; ORM; data access; async; await; transactions; locking; write queue; WAL mode; optimization; speed; fast; throughput; scaling; benchmarks; 10x faster</PackageTags>
18+
<!-- ========== CRITICAL SEO OPTIMIZATIONS ========== -->
19+
<!-- 1. OPTIMIZED DESCRIPTION (Front-loaded value) -->
20+
<Description>
21+
Eliminates 'SQLITE_BUSY' / 'database is locked' errors in multi-threaded
22+
Entity Framework Core apps. Provides automatic write serialization, 10x faster
23+
bulk inserts, and true parallel reads for SQLite. A drop-in, high-performance,
24+
thread-safe addition to Microsoft.EntityFrameworkCore.Sqlite in .NET 10.
25+
</Description>
2226

23-
<!-- Enhanced Keywords for NuGet Search Algorithm -->
27+
28+
<!-- 2. CORRECTED TAGS FORMAT (Space-delimited per NuGet spec) -->
29+
<PackageTags>sqlite sqlite3 entity-framework-core efcore concurrency thread-safe multi-threading database-locked sqlite-busy performance bulk-insert parallel-reads write-ahead-logging wal dotnet-10 entity-framework orm database-provider high-performance async transactions locking queue</PackageTags>
30+
31+
<!-- 3. STRUCTURED RELEASE NOTES -->
2432
<PackageReleaseNotes>
25-
v10.0.0: Production release with performance optimizations. Achieve 10x faster bulk inserts and true parallel read scaling while eliminating SQLite database locked errors. Features: Automatic write serialization, optimized connection management, WAL mode configuration, and intelligent retry logic. Built for Entity Framework Core 10.0.0+ on .NET 10.
33+
<![CDATA[
34+
🚀 **v10.0.2 - Initial Stable Release: Production-Ready SQLite Concurrency & Performance**
35+
36+
This first major release transforms SQLite into a robust database for concurrent .NET applications by fixing core limitations of the standard provider.
37+
38+
**✅ SOLVES: Concurrency & Locking Errors**
39+
• **Eliminates `SQLITE_BUSY` / "database is locked" errors** with automatic, application-level write serialization.
40+
• **Guarantees 100% write reliability** under any multi-threaded load.
41+
42+
**⚡ DELIVERS: Exceptional Performance**
43+
• **Achieves up to 10x faster bulk inserts** vs. standard `SaveChanges()` through intelligent batching.
44+
• **Enables true parallel read scaling** with non-blocking connections.
45+
• **Optimizes all interactions** (connections, transactions, WAL mode) for maximum throughput.
46+
47+
**🧩 PROVIDES: Seamless Developer Experience**
48+
• **Drop-in replacement** – change `UseSqlite()` to `UseSqliteWithConcurrency()`.
49+
• **Full EF Core compatibility** – all existing DbContexts, models, and LINQ queries work unchanged.
50+
• **Simplifies complex logic** – abstracts retry patterns, lock management, and connection pooling.
51+
52+
**🏗️ ENSURES: Enterprise-Grade Robustness**
53+
• Built-in production resilience with exponential backoff retry and crash-safe transactions.
54+
• Targets the modern .NET ecosystem with first-class support for **.NET 10** and **Entity Framework Core 10**.
55+
56+
Get started in one line. Stop compromising on SQLite reliability and speed.
57+
]]>
2658
</PackageReleaseNotes>
59+
<!-- =============================================== -->
2760

28-
<!-- Repository Information (GitHub SEO) -->
61+
<!-- Repository & Project Info (Key Trust Signals) -->
2962
<PackageProjectUrl>https://github.com/CornerstoneCode/EntityFrameworkCore.Sqlite.Concurrency</PackageProjectUrl>
3063
<RepositoryUrl>https://github.com/CornerstoneCode/EntityFrameworkCore.Sqlite.Concurrency.git</RepositoryUrl>
3164
<RepositoryType>git</RepositoryType>
65+
<!-- Enables SourceLink - Keep this for debugging support -->
66+
<PublishRepositoryUrl>true</PublishRepositoryUrl>
67+
<EmbedUntrackedSources>true</EmbedUntrackedSources>
3268

33-
<!-- Trust Signals -->
69+
<!-- Licensing & Documentation (Mandatory for Trust) -->
3470
<PackageLicenseExpression>MIT</PackageLicenseExpression>
3571
<PackageReadmeFile>README.md</PackageReadmeFile>
36-
<PackageIcon>res/logo.png</PackageIcon>
37-
38-
<!-- Debugging Support (Increases Package Quality Score) -->
39-
<PublishRepositoryUrl>true</PublishRepositoryUrl>
40-
<EmbedUntrackedSources>true</EmbedUntrackedSources>
41-
<IncludeSymbols>true</IncludeSymbols>
42-
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
43-
<GenerateDocumentationFile>true</GenerateDocumentationFile>
72+
<PackageIcon>res\logo.png</PackageIcon>
73+
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
4474

45-
<!-- Build Optimization -->
75+
<!-- Build & Packaging Configuration -->
4676
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
4777
<IsPackable>true</IsPackable>
48-
<IsTrimmable>true</IsTrimmable>
49-
<EnableTrimAnalyzer>true</EnableTrimAnalyzer>
5078

51-
<!-- Additional Metadata for NuGet.org -->
52-
<NeutralLanguage>en-US</NeutralLanguage>
53-
<Copyright>© 2026 Cornerstone Code. All rights reserved.</Copyright>
54-
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
79+
<!-- Debug Symbol Configuration -->
80+
<IncludeSymbols>true</IncludeSymbols>
81+
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
5582
</PropertyGroup>
5683

57-
<!-- Required Dependencies -->
84+
<!-- Dependencies -->
5885
<ItemGroup>
5986
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.0" />
6087
<PackageReference Include="Microsoft.Data.Sqlite" Version="10.0.0" />
6188
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.0" />
6289
<PackageReference Include="System.Threading.Channels" Version="8.0.0" />
90+
<!-- SourceLink for debugging support -->
91+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
6392
</ItemGroup>
6493

6594
<!-- Optional Dependencies (Conditional) -->
@@ -69,14 +98,9 @@
6998
<PackageReference Include="Spectre.Console" Version="0.54.0" Condition="'$(IncludeSpectre)' == 'true'" />
7099
</ItemGroup>
71100

101+
<!-- Packaged Files -->
72102
<ItemGroup>
73-
<None Include="doc\QUICKSTART.md" Pack="true" PackagePath="\" />
74103
<None Include="..\README.md" Pack="true" PackagePath="\" />
75104
<None Include="res\logo.png" Pack="true" PackagePath="res\" />
76105
</ItemGroup>
77-
78-
<!-- Source Link for Debugging -->
79-
<ItemGroup>
80-
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
81-
</ItemGroup>
82106
</Project>

EntityFrameworkCore.Sqlite.Concurrency/bin/Debug/net10.0/EFCore.Sqlite.Concurrency.deps.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"compilationOptions": {},
77
"targets": {
88
".NETCoreApp,Version=v10.0": {
9-
"EFCore.Sqlite.Concurrency/10.0.0": {
9+
"EFCore.Sqlite.Concurrency/10.0.2": {
1010
"dependencies": {
1111
"Microsoft.EntityFrameworkCore.Sqlite": "10.0.0",
1212
"Microsoft.Extensions.Logging.Abstractions": "10.0.0"
@@ -350,7 +350,7 @@
350350
}
351351
},
352352
"libraries": {
353-
"EFCore.Sqlite.Concurrency/10.0.0": {
353+
"EFCore.Sqlite.Concurrency/10.0.2": {
354354
"type": "project",
355355
"serviceable": false,
356356
"sha512": ""
Binary file not shown.
Binary file not shown.

EntityFrameworkCore.Sqlite.Concurrency/bin/Debug/net10.0/EFCore.Sqlite.Concurrency.xml

Lines changed: 0 additions & 8 deletions
This file was deleted.
Binary file not shown.

0 commit comments

Comments
 (0)