TransientDb 1.2.0
See the version list below for details.
dotnet add package TransientDb --version 1.2.0
NuGet\Install-Package TransientDb -Version 1.2.0
<PackageReference Include="TransientDb" Version="1.2.0" />
paket add TransientDb --version 1.2.0
#r "nuget: TransientDb, 1.2.0"
// Install TransientDb as a Cake Addin #addin nuget:?package=TransientDb&version=1.2.0 // Install TransientDb as a Cake Tool #tool nuget:?package=TransientDb&version=1.2.0
TransientDb
TransientDb is a lightweight, dynamic, runtime, code-only database which comes in handy whenever you need quick setup and teardown of an ephemeral database with a controlled starting state specified by SQL scripts. It is based on MS SQL Local DB.
Installing
- Ensure you have MS SQL Local DB. This is an optional install within SQL Express which you can install from: SQL Server Express LocalDB - SQL Server | Microsoft Learn
- Install the TransientDb nuget package
Usage
TransientDb can be used to create and destroy local databases on the fly via SQL scripts. This is a very powerful concept when you want to create fully integration tested code (all the way down the DB level) without having to share databases (which is un-controlled and un-scientific) or create convoluted infrastructure to emulate an in-memory database.
It is ORM agnostic because its an actual database!
The following code shows an example:
using(var transientDbConnection = TransientDb.Create(new FileInfo("CreateCompanyDatabase.sql")))
{
// Transient database starts existing here
// Dapper integration is seamless
var dapperPerson = transientDbConnection.Connection.Query<Person>("select * from dbo.Persons where Id = 3").FirstOrDefault()
// Create and point your EF DB context to your transient db
var myEfDbContext = new CompanyContext(transientDbConnection.Connection.ConnectionString);
var efPerson = myEfDbContext.Persons.Where(p => p.Id == 3).FirstOrDefault();
}
// Transient database ceases to exist here (cleaned up along with the connection)
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
- Dapper (>= 2.0.123)
- Microsoft.SqlServer.Compact (>= 4.0.8876.1)
- Microsoft.SqlServer.ConnectionInfo.dll (>= 1.0.1)
- Microsoft.SqlServer.Management.Sdk.Sfc.dll (>= 1.0.1)
- Microsoft.SqlServer.Smo.dll (>= 1.0.1)
- Microsoft.SqlServer.SqlEnum.dll (>= 1.0.1)
- Microsoft.SqlServer.SqlManagementObjects (>= 161.47027.0)
- System.Data.SqlClient (>= 4.8.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Added Icon