INTRODUCTION · CORE-DATAeQuantic.Core.DataeQuantic.Core.Data étend la bibliothèque principale avec les abstractions dont l'accès aux données a besoin : une unité de travail, des dépôts et la correspondance entre une ligne stockée et une entité de domaine.
Aperçu
L'unité de travail, le modèle Repository et le mappage objet-relationnel forment un ensemble, si bien qu'une transaction couvre plusieurs dépôts et ne valide qu'une fois.Elle fonctionne avec plusieurs fournisseurs de base de données et stratégies de persistance, et le choix du fournisseur reste dans la configuration plutôt que dans le code qui interroge.
Installer
shell
dotnet add package eQuantic.Core.Data
Ce qu'elle fait
Unité de travailUne transaction sur plusieurs dépôts, validée une seule fois, pour qu'un changement à moitié écrit ne survive pas à une erreur.
Dépôts étendusDes dépôts génériques avec spécifications, tri, pagination et projections : la forme de la requête arrive en argument.
Mappage des entitésLa correspondance entre entités de domaine et DTOs, configurée plutôt que supposée.
Audit automatiqueCréation, modification et suppression sont suivies d'elles-mêmes, sur chaque entité qui le demande.
Multi-tenantDes données isolées par tenant, avec le filtre appliqué pour vous au lieu d'être rappelé à chaque appel.
Unité de travailUne transaction sur plusieurs dépôts, validée une seule fois, pour qu'un changement à moitié écrit ne survive pas à une erreur.
Dépôts étendusDes dépôts génériques avec spécifications, tri, pagination et projections : la forme de la requête arrive en argument.
Mappage des entitésLa correspondance entre entités de domaine et DTOs, configurée plutôt que supposée.
Audit automatiqueCréation, modification et suppression sont suivies d'elles-mêmes, sur chaque entité qui le demande.
Multi-tenantDes données isolées par tenant, avec le filtre appliqué pour vous au lieu d'être rappelé à chaque appel.
Démarrage rapide
Configurer le contexte — Votre contexte de données hérite de la classe de base, qui apporte l'audit et les filtres de tenant.
C#
public class ApplicationDbContext : EQuanticDbContext{ public DbSet<Product> Products { get; set; } public DbSet<Order> Orders { get; set; } public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.ApplyConfigurationsFromAssembly(typeof(ApplicationDbContext).Assembly); }}
Coordonner avec une unité de travail — Prenez l'interface, touchez plusieurs dépôts et enregistrez une seule fois.
C#
public class OrderService{ private readonly IUnitOfWork _unitOfWork; public OrderService(IUnitOfWork unitOfWork) { _unitOfWork = unitOfWork; } public async Task<Order> CreateOrderAsync(CreateOrderRequest request) { var order = new Order(request.CustomerId, request.Items); await _unitOfWork.GetRepository<Order>().AddAsync(order); await _unitOfWork.GetRepository<Product>().UpdateStockAsync(request.Items); await _unitOfWork.SaveChangesAsync(); return order; }}
Interroger avec des spécifications — Construisez la requête comme un objet : combinable, testable et réutilisable au prochain appel.
C#
public class GetOrdersByCustomerSpec : Specification<Order>{ public GetOrdersByCustomerSpec(int customerId, DateTime? fromDate = null) { Criteria = o => o.CustomerId == customerId; if (fromDate.HasValue) Criteria = Criteria.And(o => o.CreatedAt >= fromDate.Value); AddInclude(o => o.Items); AddInclude("Items.Product"); ApplyOrderByDescending(o => o.CreatedAt); }}
Surface publique
ESPACE DE NOMS
SURFACE PUBLIQUE
IUnitOfWork
Coordonne les transactions et les dépôts qui y participent.
EQuanticDbContext
Le contexte Entity Framework de base, avec l'audit et le filtre de tenant déjà en place.
Specification<T>
La classe de base d'une spécification de requête combinable.
Vous préférez lire du code ?
Chaque paquet est sous licence MIT et public, et les exemples sont prêts à copier-coller.
Nous construisons des produits, des bibliothèques et des logiciels de qualité entreprise qui passent à l'échelle mondiale. Un laboratoire technologique basé au Portugal.
Nous construisons des produits, des bibliothèques et des logiciels de qualité entreprise qui passent à l'échelle mondiale. Un laboratoire technologique basé au Portugal.
Nous construisons des produits, des bibliothèques et des logiciels de qualité entreprise qui passent à l'échelle mondiale. Un laboratoire technologique basé au Portugal.