SquidStd.Database
0.7.0
dotnet add package SquidStd.Database --version 0.7.0
NuGet\Install-Package SquidStd.Database -Version 0.7.0
<PackageReference Include="SquidStd.Database" Version="0.7.0" />
<PackageVersion Include="SquidStd.Database" Version="0.7.0" />
<PackageReference Include="SquidStd.Database" />
paket add SquidStd.Database --version 0.7.0
#r "nuget: SquidStd.Database, 0.7.0"
#:package SquidStd.Database@0.7.0
#addin nuget:?package=SquidStd.Database&version=0.7.0
#tool nuget:?package=SquidStd.Database&version=0.7.0
<p align="center"> <img src="https://raw.githubusercontent.com/tgiachi/squid-std/main/assets/icon.png" alt="SquidStd" width="120" height="120" /> </p>
<h1 align="center">SquidStd.Database</h1>
<p align="center"> <a href="https://www.nuget.org/packages/SquidStd.Database/"><img src="https://img.shields.io/nuget/v/SquidStd.Database.svg" alt="NuGet" /></a> <img src="https://img.shields.io/nuget/dt/SquidStd.Database.svg" alt="Downloads" /> <a href="https://tgiachi.github.io/squid-std/articles/database.html"><img src="https://img.shields.io/badge/docs-DocFX-1390A3.svg" alt="docs" /></a> <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="license" /> </p>
FreeSql-backed implementation of the SquidStd.Database.Abstractions contracts. It owns a singleton
IFreeSql, exposes a generic FreeSqlDataAccess<TEntity> with transactional writes (rollback on
failure), bulk operations and paging, parses URI-style connection strings, and can auto-sync the schema
on startup.
Install
dotnet add package SquidStd.Database
Features
- One-line registration:
container.RegisterDatabase()(config section + service + open-genericIDataAccess<>). - Providers via URI scheme:
sqlite://,postgres://,sqlserver://,mysql://. FreeSqlDataAccess<TEntity>— CRUD, bulk insert/update/delete,QueryAsync,GetPagedAsync; writes run inside a unit of work and roll back on error. SetsId/Created/Updatedautomatically.- Optional
AutoMigrate(FreeSqlAutoSyncStructure) to create/update tables on startup. - ZLinq in-memory helpers for zero-allocation post-processing of materialized results.
Usage
using DryIoc;
using SquidStd.Database.Abstractions.Interfaces.Data;
using SquidStd.Database.Extensions;
var container = new Container();
container.RegisterDatabase(); // reads the "database" config section
// DatabaseConfig: ConnectionString = "postgres://user:pass@host:5432/app", AutoMigrate = true
var users = container.Resolve<IDataAccess<User>>();
await users.InsertAsync(new User { Name = "Ann" });
var page = await users.GetPagedAsync(page: 1, pageSize: 20, orderBy: u => u.Name);
Key types
| Type | Purpose |
|---|---|
RegisterDatabaseExtension |
RegisterDatabase() DI registration. |
DatabaseService |
Owns the singleton IFreeSql; builds it and (optionally) migrates. |
FreeSqlDataAccess<TEntity> |
FreeSql IDataAccess<TEntity> implementation. |
ConnectionStringParser |
URI → provider + native connection string. |
ZLinqResultExtensions |
Zero-alloc in-memory result helpers. |
License
MIT — part of SquidStd.
| 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
- FreeSql (>= 3.5.310)
- FreeSql.DbContext (>= 3.5.310)
- FreeSql.Provider.Sqlite (>= 3.5.310)
- Serilog (>= 4.3.1)
- SquidStd.Database.Abstractions (>= 0.7.0)
- ZLinq (>= 1.5.6)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.