PeerConcept.DataAccessExtensions 1.0.0

dotnet add package PeerConcept.DataAccessExtensions --version 1.0.0
                    
NuGet\Install-Package PeerConcept.DataAccessExtensions -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PeerConcept.DataAccessExtensions" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PeerConcept.DataAccessExtensions" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="PeerConcept.DataAccessExtensions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add PeerConcept.DataAccessExtensions --version 1.0.0
                    
#r "nuget: PeerConcept.DataAccessExtensions, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package PeerConcept.DataAccessExtensions@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=PeerConcept.DataAccessExtensions&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=PeerConcept.DataAccessExtensions&version=1.0.0
                    
Install as a Cake Tool

PeerConcept.DataAccessExtensions

This package contains some pre-built classes wrapped over EF Core's DbContext. Available in this package:

DbContextRepository

The base class DbContextRepository<TDbContext, TEntity> takes 2 type arguments:

  • TDbContext should extend EF Core's base DbContext
  • TEntity should implement the IEntity interface (empty interface)

It provides the following methods:

  • Create(TEntity entity) attaches the entity to the underlying db context
  • Update(TEntity entity) updates an entity which is tracked by the underlying db context
  • Delete(TEntity entity) deletes an entity from the underlying db context

DbContextPkRepository

The DbContextPkRepository<TDbContext, TEntity, TPk> class extends the DbContextRepository class to offer support for primary keys. The primary key type is specified by the TPk type argument. The TEntity type should implement the IPkEntity<TPk> interface which requires a public Id property of type TPk.

It provides the following methods:

  • Get(TPk pk) fetches an entity from the underlying db context, whose primary key matches the provided value
  • Delete(TPk pk) removes an entity from the underlying db context, whose primary key matches the provided value

UnitOfWork

Implementation of the Unit of Work pattern on top of a TDbContext db context. It uses .NET's built-in IoC container to create an isolated scope in which all underlying dependencies (db context, repositories) are registered.

It provides the following methods:

  • GetRepository<TRepository>() resolves the TRepository dependency from the isolated scope's service provider
  • Commit() saves changes to the underlying db context and completes the ambient transaction
  • Dispose() disposes underlying dependencies and self

Important The UnitOfWork is registered as a transient service. Resolving the IUnitOfWork dependency will result in an instance which is scoped to the service scope which resolves it. This will result in a singleton-like behavior within the same service scope, whereby multiple instances of UnitOfWork which are resolved in the same service scope will reference the same db context and repository instances.

UnitOfWorkFactory

This is the intended way of instantiating units of work. The factory is registered as a singleton to ensure a single entry point for generating units of work.

It provides the following methods:

  • Create() resolves a new UnitOfWork scoped to an isolated service scope.

Example

// IServiceProvider services
var uowFactory = services.GetRequiredService<IUnitOfWorkFactory>();
using var unitOfWork = uowFactory.Create();

var repository = unitOfWork.GetRepository<ISomeRepository>();
repository.Create(someData);

unitOfWork.Commit();
Product 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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 428 11/7/2022