EQP.EFRepository.Core
2.0.1
See the version list below for details.
dotnet add package EQP.EFRepository.Core --version 2.0.1
NuGet\Install-Package EQP.EFRepository.Core -Version 2.0.1
<PackageReference Include="EQP.EFRepository.Core" Version="2.0.1" />
paket add EQP.EFRepository.Core --version 2.0.1
#r "nuget: EQP.EFRepository.Core, 2.0.1"
// Install EQP.EFRepository.Core as a Cake Addin #addin nuget:?package=EQP.EFRepository.Core&version=2.0.1 // Install EQP.EFRepository.Core as a Cake Tool #tool nuget:?package=EQP.EFRepository.Core&version=2.0.1
EQP.EFRepository.Core
Pacchetto che implementa il pattern UnitOfWork & Repository e permette la centralizzazione di interfacce, modelli, repository (con operazioni CRUD di base) e servizi basati su database gestiti tramite Entity Framework Core.
Per la gestione dei modelli sono esposte le seguenti interfacce:
- IPrimaryKeyEntity<TPrimaryKey>: interfaccia che permette di attribuire la proprietà ID (identificativo univoco) a un modello e indicarne il tipo (TPrimaryKey sarà il tipo primitivo da attribuire alla primary key)
- IBaseEntity: interfaccia che implementa la IPrimaryKeyEntity<int> definendo già la primary key come campo intero. I modelli che implementano questa interfaccia avranno sempre la proprietà ID di tipo int
- IBaseStringEntity: interfaccia che implementa la IPrimaryKeyEntity<int> definendo la primary key come campo di tipo string. I modelli che implementano questa interfaccia avranno sempre la proprietà ID di tipo string
- IAuditEntity: interfaccia che permette l'implementazione delle proprietà necessarie all'audit, quindi identificativo dell'utente che esegue una insert o update sui dati di un certo modello, e le date di inserimento e modifica di un record
- ISoftDeleteEntity: interfaccia che permette la gestione della cancellazione logica. I modelli che implementano questa interfaccia non verranno cancellati fisicamente dal database ma solo logicamente. Inoltre verrà tenuto traccia dell'identificativo dell'utente che esegue la soft delete e la data in cui è avvenuta tale cancellazione
- IDisableEntity: interfaccia che permette la gestione della disattivazione/attivazione di un'entità. I modelli che implementano questa interfaccia potranno essere disabilitati in modo da impedirne la ricerca ma lasciarli comunque visibili in alcune sezioni.
- IUnitOfWork: interfaccia che permette la gestione di più unit of work e quindi di più connessioni e transazioni su stesso db o db differenti.
- ISessionModel: interfaccia utilizzata per centralizzare dati di sessione riutilizzabili all'interno di repository e servizi. L'interfaccia implementa solo la proprietà User di tipo IBaseEntity. Al momento viene usata, se definita, solo per la scrittura dei dati di audit per le entità che implementano l'interfaccia IAuditEntity
Livello di accesso ai dati
UnitOfWork
Centralizza l'esecuzione delle operazioni CRUD e la gestione delle transazioni sul contesto del database. Implementa l'interfaccia IUnitOfWork per fare in modo di poter gestire più database e quindi più UnitOfWork. Per poter essere istanziata è necessario passare nel costruttore l'istanza del DbContext da utilizzare. I metodi esposti da questa classe sono:
- SaveChanges() : scrive sul database tutte le modifiche pendenti tracciate nell'istanza del DbContext passata nel costruttore
- BeginTransaction(): apre una nuova transazione sull'istanza del DbContext passata nel costruttore. Se esiste già una transazione aperta sul DbContext genera un'eccezione.
- CommitTransaction() esegue la commit della transazione aperta sull'istanza del DbContext passata nel costruttore. Se non ci sono transazioni aperte genera un'eccezione.
- RollbackTransaction() esegue il rollback transazione aperta sull'istanza del DbContext passata nel costruttore. Se non ci sono transazioni aperte genera un'eccezione.
- GetIdentityRepository<TRepository, TEntity>(): utilizza la reflection per restituire una nuova istanza del repository avente tipo uguale al TRepository definito.
IRepository
Interfaccia che permette la centralizzazione di tutte le operazioni CRUD di base. Per poter implementare tale interfaccia è obbligatorio definire i seguenti tipi:
- TEntity: tipo dell'entità gestita con EFCore e che deve implementare l'interfaccia IPrimaryKeyEntity<TPrimaryKey>
- TPrimaryKey: tipo primitivo della primary key ID
L'interfaccia definisce i seguenti metodi:
- void Save(TEntity entity):
- TEntity Get(TPrimaryKey, params Expression<Func<TEntity, object>>[] includes):
- IQueryable<TEntity> GetAll(Expression<Func<TEntity, object>>[] includes = null):
- IQueryable<TEntity> GetBy(Expression<Func<TEntity, bool>> predicate, Expression<Func<TEntity, object>>[] includes = null):
- void Delete(TEntity entity):
- void Delete(TPrimaryKey ID):
- bool Exists(TPrimaryKey ID):
- bool Exists(Expression<Func<TEntity, bool>> predicate):
- void WriteAuditData(TEntity auditEntity):
- IQueryable<TEntity> IncludeMultiple(params Expression<Func<TEntity, object>>[] includes):
IdentityRepository
Questo repository implementa l'interfaccia IRepository definendo già il tipo TPrimaryKey come intero, pertanto tutte le classi che erediteranno da questo dovranno essere classi che gestiscono modelli la cui primary key è un intero. //TO DO
GenericRepository
//TO DO
Livello di gestione dei servizi centralizzati
//TO DO
IdentityService
//TO DO
GenericService
//TO DO
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. |
.NET Core | netcoreapp3.1 is compatible. |
-
.NETCoreApp 3.1
- LinqKit.Microsoft.EntityFrameworkCore (>= 3.0.0)
- Microsoft.CodeAnalysis.CSharp.Scripting (>= 3.7.0)
- Microsoft.EntityFrameworkCore (>= 3.1.4)
- Newtonsoft.Json.Schema (>= 3.0.13)
- System.ComponentModel.Annotations (>= 4.7.0)
- System.Configuration.ConfigurationManager (>= 4.7.0)
- System.Data.SqlClient (>= 4.8.1)
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 |
---|---|---|
6.1.4 | 160 | 9/24/2024 |
6.1.3 | 114 | 8/7/2024 |
6.1.2 | 67 | 7/31/2024 |
6.1.1 | 578 | 10/6/2023 |
6.1.0 | 798 | 2/6/2023 |
6.0.3 | 800 | 1/31/2023 |
6.0.2 | 1,185 | 8/3/2022 |
6.0.0 | 1,082 | 5/30/2022 |
3.9.14 | 1,065 | 6/8/2022 |
3.9.12 | 1,017 | 5/18/2022 |
3.9.11 | 981 | 5/16/2022 |
3.9.10 | 1,070 | 4/19/2022 |
3.9.9 | 1,042 | 4/5/2022 |
3.9.8 | 1,012 | 3/31/2022 |
3.9.7 | 1,039 | 3/11/2022 |
3.9.6 | 1,081 | 2/25/2022 |
3.9.5 | 1,052 | 2/21/2022 |
3.9.4 | 1,032 | 2/17/2022 |
3.9.3 | 1,092 | 1/28/2022 |
3.9.2 | 1,037 | 1/27/2022 |
3.9.1 | 1,075 | 1/19/2022 |
3.9.0 | 1,064 | 1/17/2022 |
3.8.1 | 823 | 12/27/2021 |
3.8.0 | 842 | 12/23/2021 |
3.7.14 | 847 | 12/22/2021 |
3.7.13 | 807 | 12/20/2021 |
3.7.12 | 816 | 12/20/2021 |
3.7.11 | 818 | 12/13/2021 |
3.7.10 | 859 | 12/3/2021 |
3.7.9 | 1,352 | 12/1/2021 |
3.7.8 | 841 | 11/29/2021 |
3.7.7 | 2,573 | 11/26/2021 |
3.7.5 | 2,048 | 11/26/2021 |
3.7.4 | 885 | 11/23/2021 |
3.7.3 | 936 | 11/19/2021 |
3.7.2 | 920 | 10/20/2021 |
3.7.1 | 884 | 10/6/2021 |
3.7.0 | 919 | 9/30/2021 |
3.6.1 | 861 | 9/24/2021 |
3.6.0 | 894 | 9/22/2021 |
3.5.0 | 940 | 9/2/2021 |
3.4.9 | 927 | 8/24/2021 |
3.4.8 | 929 | 8/6/2021 |
3.4.7 | 896 | 8/5/2021 |
3.4.6 | 964 | 7/29/2021 |
3.4.5 | 908 | 7/27/2021 |
3.4.4 | 901 | 7/26/2021 |
3.4.3 | 941 | 7/22/2021 |
3.4.2 | 976 | 7/9/2021 |
3.4.1 | 972 | 7/1/2021 |
3.4.0 | 960 | 7/1/2021 |
3.3.8 | 928 | 6/22/2021 |
3.3.7 | 900 | 6/21/2021 |
3.3.6 | 944 | 6/18/2021 |
3.3.5 | 1,000 | 6/15/2021 |
3.2.5 | 840 | 5/14/2021 |
3.2.4 | 889 | 4/28/2021 |
3.2.3 | 861 | 4/27/2021 |
3.2.2 | 864 | 4/16/2021 |
3.2.1 | 894 | 4/9/2021 |
3.2.0 | 873 | 3/30/2021 |
3.1.5 | 867 | 3/29/2021 |
3.1.4 | 866 | 3/22/2021 |
3.1.1 | 946 | 3/15/2021 |
3.1.0 | 968 | 3/10/2021 |
3.0.8 | 1,002 | 3/8/2021 |
3.0.7 | 946 | 3/5/2021 |
3.0.6 | 1,006 | 2/23/2021 |
3.0.5 | 962 | 1/29/2021 |
3.0.4 | 954 | 1/26/2021 |
3.0.2 | 939 | 1/25/2021 |
2.0.8 | 964 | 1/18/2021 |
2.0.7 | 980 | 12/31/2020 |
2.0.6 | 1,037 | 12/24/2020 |
2.0.5 | 1,008 | 12/2/2020 |
2.0.4 | 960 | 11/25/2020 |
2.0.3 | 970 | 11/24/2020 |
2.0.1 | 1,006 | 11/24/2020 |
1.3.9 | 1,004 | 11/10/2020 |
1.3.8 | 998 | 11/9/2020 |
1.3.2 | 1,099 | 10/14/2020 |
1.2.0 | 1,035 | 9/7/2020 |