SolTechnology.Core.SQL
0.6.0
dotnet add package SolTechnology.Core.SQL --version 0.6.0
NuGet\Install-Package SolTechnology.Core.SQL -Version 0.6.0
<PackageReference Include="SolTechnology.Core.SQL" Version="0.6.0" />
<PackageVersion Include="SolTechnology.Core.SQL" Version="0.6.0" />
<PackageReference Include="SolTechnology.Core.SQL" />
paket add SolTechnology.Core.SQL --version 0.6.0
#r "nuget: SolTechnology.Core.SQL, 0.6.0"
#:package SolTechnology.Core.SQL@0.6.0
#addin nuget:?package=SolTechnology.Core.SQL&version=0.6.0
#tool nuget:?package=SolTechnology.Core.SQL&version=0.6.0
Overview
The SolTechnology.Core.SQL library provides minimum functionality needed for SQL db connection. It handles needed services registration and configuration and a result provides IDbConnection.
Registration
For installing the library, reference SolTechnology.Core.SQL nuget package and invoke AddSQL() service collection extension method:
services.AddSQL();
Configuration
- The first option is to create an appsettings.json section:
"Configuration": {
"Sql": {
"ConnectionString": "Data Source=localhost,1401;Database=TaleCodeDatabase; User ID=SA;Password=password_xxddd_2137;Persist Security Info=True;MultipleActiveResultSets=True;Trusted_Connection=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=True"
}
}
- Alternatevely the same settings can be provided by optional parameter during registration:
var sqlConfiguration = new SQLConfiguration
{
ConnectionString = "Data Source=localhost,1401;Database=TaleCodeDatabase; User ID=SA;Password=password_xxddd_2137;Persist Security Info=True;MultipleActiveResultSets=True;Trusted_Connection=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=True"
};
services.AddSQL(sqlConfiguration);
Usage
- Inject ISQLConnectionFactory
public MatchRepository(ISQLConnectionFactory sqlConnectionFactory)
{
_sqlConnectionFactory = sqlConnectionFactory;
}
- Create IDbConnection
using (var connection = _sqlConnectionFactory.CreateConnection())
- Works well with raw SQL and Dapper ORM.
Testing
The companion package SolTechnology.Core.SQL.Testing provides SQLFixture — a
Testcontainers-backed database fixture for component tests.
Reference it from test projects only.
It is ORM-agnostic (it only hands back a connection string, so Dapper and EF consumers are served identically) and supports both SQL Server (default) and PostgreSQL, with pluggable schema provisioning and Respawn-based reset:
// SQL Server + dacpac (default, source-compatible with the original in-Sql fixture)
var fixture = new SQLFixture("TaleCodeDatabase")
.WithSQLProject("../../../src/TaleCodeDatabase/TaleCodeDatabase.csproj");
await fixture.InitializeAsync();
var connectionString = fixture.DatabaseConnectionString; // wire into "Sql:ConnectionString"
// ... run tests ...
await fixture.ResetAsync(); // between-test reset (Respawn; schema preserved)
await fixture.DisposeAsync(); // no-op when TESTCONTAINERS_REUSE=true
Engine + provisioning options (fluent, set before InitializeAsync):
| Method | Effect |
|---|---|
.UsePostgres() |
Use PostgreSQL instead of the default SQL Server. |
.WithSQLProject(path) |
Build + deploy a dacpac from a .sqlproj (SQL Server only). |
.WithScripts(paths...) |
Execute raw .sql script files in order. |
.WithEfMigrations(cs => ...) |
Run EF migrations via a delegate — the package stays EF-free; you bring your own DbContext. |
.WithSchema((cs, ct) => ...) |
General provisioning seam (any custom logic). |
.WithNetwork(network, alias) |
Attach the container to a shared docker network. |
Notes:
- Type name is all-caps
SQLFixtureand the namespace isSolTechnology.Core.SQL.Testing(per ADR-001). - DacFx stays in
SolTechnology.Core.SQLat runtime (used bySQLProjectDeployer); only the test-only fixture moved to the companion package. - Container lifetime /
TESTCONTAINERS_REUSEreuse is the shared model from theQuality.md → Container lifetime & reuse.
| 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
- Microsoft.Extensions.Configuration (>= 10.0.1)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.1)
- Microsoft.Extensions.DependencyInjection (>= 10.0.1)
- Microsoft.Extensions.Options (>= 10.0.1)
- Microsoft.SqlServer.DacFx (>= 170.1.61)
- Polly (>= 8.5.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.