PeerConcept.DataAccessExtensions
1.0.0
dotnet add package PeerConcept.DataAccessExtensions --version 1.0.0
NuGet\Install-Package PeerConcept.DataAccessExtensions -Version 1.0.0
<PackageReference Include="PeerConcept.DataAccessExtensions" Version="1.0.0" />
<PackageVersion Include="PeerConcept.DataAccessExtensions" Version="1.0.0" />
<PackageReference Include="PeerConcept.DataAccessExtensions" />
paket add PeerConcept.DataAccessExtensions --version 1.0.0
#r "nuget: PeerConcept.DataAccessExtensions, 1.0.0"
#:package PeerConcept.DataAccessExtensions@1.0.0
#addin nuget:?package=PeerConcept.DataAccessExtensions&version=1.0.0
#tool nuget:?package=PeerConcept.DataAccessExtensions&version=1.0.0
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:
TDbContextshould extend EF Core's baseDbContextTEntityshould implement theIEntityinterface (empty interface)
It provides the following methods:
Create(TEntity entity)attaches the entity to the underlying db contextUpdate(TEntity entity)updates an entity which is tracked by the underlying db contextDelete(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 valueDelete(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 theTRepositorydependency from the isolated scope's service providerCommit()saves changes to the underlying db context and completes the ambient transactionDispose()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 newUnitOfWorkscoped 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 | 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. 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. |
-
net6.0
- Microsoft.EntityFrameworkCore (>= 6.0.9)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
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 |