Skip to content

Commit 15cd10b

Browse files
Working through builds
1 parent ba64684 commit 15cd10b

89 files changed

Lines changed: 4162 additions & 27 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.build/build_and_pack.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# Configuration
5+
PROJECT_PATH="EntityFrameworkCore.Sqlite.Concurrency/EFCore.Sqlite.Concurrency.csproj"
6+
CONFIGURATION="Release"
7+
OUTPUT_DIR="EntityFrameworkCore.Sqlite.Concurrency/bin/Release"
8+
9+
echo "Building project in $CONFIGURATION mode..."
10+
dotnet build "$PROJECT_PATH" -c "$CONFIGURATION"
11+
12+
echo "Packing project..."
13+
dotnet pack "$PROJECT_PATH" -c "$CONFIGURATION" --no-build
14+
15+
echo "Build and pack completed successfully."
16+
echo "Packages are located in $OUTPUT_DIR"

.build/publish.sh

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# Configuration
5+
PACKAGE_DIR="EntityFrameworkCore.Sqlite.Concurrency/bin/Release"
6+
SOURCE="https://api.nuget.org/v3/index.json"
7+
8+
# Check if NUGET_API_KEY is set
9+
if [ -z "$NUGET_API_KEY" ]; then
10+
echo "Error: NUGET_API_KEY environment variable is not set."
11+
exit 1
12+
fi
13+
14+
# Find the latest .nupkg file
15+
PACKAGE_FILE=$(ls $PACKAGE_DIR/*.nupkg | grep -v ".symbols.nupkg" | grep -v ".snupkg" | head -n 1)
16+
17+
if [ -z "$PACKAGE_FILE" ]; then
18+
echo "Error: No .nupkg file found in $PACKAGE_DIR"
19+
exit 1
20+
fi
21+
22+
echo "Publishing $PACKAGE_FILE to NuGet..."
23+
dotnet nuget push "$PACKAGE_FILE" --api-key "$NUGET_API_KEY" --source "$SOURCE" --skip-duplicate
24+
25+
echo "Publishing completed."

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@
22
Sqlite-Concurrency/bin/
33

44
Sqlite-Concurrency/obj/
5+
6+
.idea/
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
2+
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASqliteOpenMode_002Ecs_002Fl_003AC_0021_003FUsers_003Fmikeg_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E3_003Fresharper_002Dhost_003FSourcesCache_003F161f5a84776e13269eb5cbbee12d9ec5c53779eb52455406d3d63df1a71_003FSqliteOpenMode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.0.31903.59
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EFCore.Sqlite.Concurrency", "EntityFrameworkCore.Sqlite.Concurrency\EFCore.Sqlite.Concurrency.csproj", "{CDD465FA-9DE5-48C7-931E-5D3B0A9AEED5}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|Any CPU = Debug|Any CPU
11+
Release|Any CPU = Release|Any CPU
12+
EndGlobalSection
13+
GlobalSection(SolutionProperties) = preSolution
14+
HideSolutionNode = FALSE
15+
EndGlobalSection
16+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
17+
{CDD465FA-9DE5-48C7-931E-5D3B0A9AEED5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
18+
{CDD465FA-9DE5-48C7-931E-5D3B0A9AEED5}.Debug|Any CPU.Build.0 = Debug|Any CPU
19+
{CDD465FA-9DE5-48C7-931E-5D3B0A9AEED5}.Release|Any CPU.ActiveCfg = Release|Any CPU
20+
{CDD465FA-9DE5-48C7-931E-5D3B0A9AEED5}.Release|Any CPU.Build.0 = Release|Any CPU
21+
EndGlobalSection
22+
EndGlobal
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
2+
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASqliteOpenMode_002Ecs_002Fl_003AC_0021_003FUsers_003Fmikeg_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E3_003Fresharper_002Dhost_003FSourcesCache_003F161f5a84776e13269eb5cbbee12d9ec5c53779eb52455406d3d63df1a71_003FSqliteOpenMode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<TargetFramework>net10.0</TargetFramework>
4+
<ImplicitUsings>enable</ImplicitUsings>
5+
<Nullable>enable</Nullable>
6+
7+
<!-- Core Package Identity -->
8+
<PackageId>EntityFrameworkCore.Sqlite.Concurrency</PackageId>
9+
<RootNamespace>EntityFrameworkCore.Sqlite.Concurrency</RootNamespace>
10+
<Version>10.0.0</Version>
11+
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>
15+
<Authors>Mike Gotfryd</Authors>
16+
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>
22+
23+
<!-- Enhanced Keywords for NuGet Search Algorithm -->
24+
<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.
26+
</PackageReleaseNotes>
27+
28+
<!-- Repository Information (GitHub SEO) -->
29+
<PackageProjectUrl>https://github.com/CornerstoneCode/EntityFrameworkCore.Sqlite.Concurrency</PackageProjectUrl>
30+
<RepositoryUrl>https://github.com/CornerstoneCode/EntityFrameworkCore.Sqlite.Concurrency.git</RepositoryUrl>
31+
<RepositoryType>git</RepositoryType>
32+
33+
<!-- Trust Signals -->
34+
<PackageLicenseExpression>MIT</PackageLicenseExpression>
35+
<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>
44+
45+
<!-- Build Optimization -->
46+
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
47+
<IsPackable>true</IsPackable>
48+
<IsTrimmable>true</IsTrimmable>
49+
<EnableTrimAnalyzer>true</EnableTrimAnalyzer>
50+
51+
<!-- Additional Metadata for NuGet.org -->
52+
<NeutralLanguage>en-US</NeutralLanguage>
53+
<Copyright>© 2026 Cornerstone Code. All rights reserved.</Copyright>
54+
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
55+
</PropertyGroup>
56+
57+
<!-- Required Dependencies -->
58+
<ItemGroup>
59+
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.0" />
60+
<PackageReference Include="Microsoft.Data.Sqlite" Version="10.0.0" />
61+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.0" />
62+
<PackageReference Include="System.Threading.Channels" Version="8.0.0" />
63+
</ItemGroup>
64+
65+
<!-- Optional Dependencies (Conditional) -->
66+
<ItemGroup>
67+
<PackageReference Include="EFCore.BulkExtensions.Sqlite" Version="10.0.0" Condition="'$(IncludeBulkExtensions)' == 'true'" />
68+
<PackageReference Include="MemoryPack" Version="2.0.0" Condition="'$(IncludeMemoryPack)' == 'true'" />
69+
<PackageReference Include="Spectre.Console" Version="0.54.0" Condition="'$(IncludeSpectre)' == 'true'" />
70+
</ItemGroup>
71+
72+
<ItemGroup>
73+
<None Include="doc\QUICKSTART.md" Pack="true" PackagePath="\" />
74+
<None Include="..\README.md" Pack="true" PackagePath="\" />
75+
<None Include="res\logo.png" Pack="true" PackagePath="res\" />
76+
</ItemGroup>
77+
78+
<!-- Source Link for Debugging -->
79+
<ItemGroup>
80+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
81+
</ItemGroup>
82+
</Project>

0 commit comments

Comments
 (0)