Thanks for your interest. This is a community EF Core 10 provider for libSQL. Please read this guide before opening a pull request.
Participation is governed by CODE_OF_CONDUCT.md.
A new contributor should be able to do this with only public instructions (Docker optional for remote):
git clone https://github.com/nareshjois/Nj.EntityFrameworkCore.LibSQL.git
cd Nj.EntityFrameworkCore.LibSQL
dotnet restore Nj.EntityFrameworkCore.LibSql.slnx
dotnet build Nj.EntityFrameworkCore.LibSql.slnx -c Release
dotnet test test/Nj.EntityFrameworkCore.LibSql.UnitTests -c Release
# Local sample (no Docker)
dotnet run --project samples/LocalSample
# Remote sample vs self-hosted sqld (requires Docker)
./eng/start-sqld.sh && ./eng/wait-for-sqld.sh
dotnet run --project samples/RemoteSampleOptional: samples/DiPoolingSample, samples/EmbeddedReplicaSample (sqld),
samples/MigrationsSample (README).
Turso Cloud secrets (LIBSQL_TEST_*) are not required for this path.
See docs/testing.md for full suites.
- .NET 10 SDK matching
global.json - Docker Desktop (or compatible) for remote
sqldtests - Optional:
dotnet tool restorefor localdotnet-ef
git clone https://github.com/nareshjois/Nj.EntityFrameworkCore.LibSQL.gitThe ADO.NET driver is in-repo (src/Nj.LibSql.Data / Nj.LibSql.Bindings;
docs/architecture.md).
Install the format gate once per clone:
./eng/githooks/installThis sets core.hooksPath to eng/githooks. The hook matches Ubuntu CI
(dotnet format --verify-no-changes, excluding the imported EF baseline tree).
Before pushing driver / Data / Bindings changes:
./eng/verify-driver-ci-local.sh
# Optional Turso: export LIBSQL_TEST_URL=… LIBSQL_TEST_AUTH_TOKEN=…- Open an issue for non-trivial design changes before large effort.
- Branch from
main. - Keep commits focused. When touching EF SQLite baseline source:
- Upstream import, mechanical rename, and libSQL behavior changes must stay in separate commits (upstream-baseline.md).
- Do not skip specification or contract tests to go green. Permanent exclusions need a row in compatibility.md with rationale and an issue.
- Prefer small PRs that leave the tree green.
dotnet restore Nj.EntityFrameworkCore.LibSql.slnx
dotnet format Nj.EntityFrameworkCore.LibSql.slnx --verify-no-changes \
--exclude ./src/Nj.EntityFrameworkCore.LibSql/**
dotnet build Nj.EntityFrameworkCore.LibSql.slnx -c Release
dotnet test test/Nj.EntityFrameworkCore.LibSql.UnitTests -c Release
dotnet test test/Nj.LibSql.DriverContractTests -c Release
dotnet test test/Nj.EntityFrameworkCore.LibSql.FunctionalTests -c Release
dotnet test test/Nj.EntityFrameworkCore.LibSql.ComplianceTests -c Release \
--filter "FullyQualifiedName~LibSqlComplianceTest|FullyQualifiedName~UpdatesLibSqlTest"
./eng/generate-compliance-report.sh || true
./eng/verify-package.shMore detail: docs/testing.md.
- Package / namespace / assembly:
Nj.EntityFrameworkCore.LibSql(LibSql, notLibSQL). - Public entry points mirror EF Sqlite:
UseLibSql,AddEntityFrameworkLibSql, etc. - Connection modes via
Nj.LibSql.Dataconnection string (or existingLibSqlConnection). NoUseLibSqlLocal/UseLibSqlRemote/UseLibSqlReplica. - Do not reference
Microsoft.EntityFrameworkCore.Sqlite. - Do not copy third-party provider implementations.
- Do not expose Turso /
sqldadministration throughDatabaseFacade. - Remote / embedded-replica
EnsureDeletedmust throwNotSupportedException.
See limitations.md and architecture.md.
Include what changed and why, how you tested, and any compatibility or connection-mode impact.
MIT (LICENSE). Preserve Microsoft copyright headers on imported baseline files. See NOTICE.
Do not open public issues for vulnerabilities. Follow SECURITY.md.
