INTRODUCCIÓN · COREeQuantic.CoreLa biblioteca eQuantic Core es la base de todo el ecosistema, y aporta las abstracciones esenciales y la funcionalidad de base para construir aplicaciones robustas y escalables.
Resumen
Implementa los patrones de arquitectura que el resto del ecosistema da por supuestos — Domain-Driven Design, Clean Architecture, SOLID — para que un proyecto empiece desde una forma y no desde una carpeta.Es la biblioteca más usada que publicamos, y aquella sobre la que se apoyan todos los demás paquetes: interfaces normalizadas para repositorios, servicios y entidades de dominio.
Instalar
shell
dotnet add package eQuantic.Core
Qué hace
Abstracciones de repositorioInterfaces genéricas de acceso a datos, con CRUD, paginación y especificaciones combinables.
Entidades de dominioTipos base para entidades, agregados y objetos de valor, siguiendo DDD.
EspecificacionesEl patrón de especificación, para consultas complejas una vez y reutilizables después.
Eventos de dominioUn sistema de eventos para comunicar contextos delimitados, y para efectos secundarios que corresponden fuera del agregado.
Objetos de valorTipos base para objetos de valor, con validación y comparación por valor en lugar de por referencia.
Abstracciones de repositorioInterfaces genéricas de acceso a datos, con CRUD, paginación y especificaciones combinables.
Entidades de dominioTipos base para entidades, agregados y objetos de valor, siguiendo DDD.
EspecificacionesEl patrón de especificación, para consultas complejas una vez y reutilizables después.
Eventos de dominioUn sistema de eventos para comunicar contextos delimitados, y para efectos secundarios que corresponden fuera del agregado.
Objetos de valorTipos base para objetos de valor, con validación y comparación por valor en lugar de por referencia.
Inicio rápido
Configuración inicial — Registre los servicios del núcleo en su proyecto.
C#
public void ConfigureServices(IServiceCollection services){ services.AddEQuantic() .AddDataAccess() .AddRepositories();}
Definir una entidad — Sus tipos de dominio heredan la base, que les da identidad y un búfer de eventos.
C#
public class Product : Entity<int>{ public string Name { get; private set; } public decimal Price { get; private set; } public Product(string name, decimal price) { Name = name; Price = price; } public void UpdatePrice(decimal newPrice) { Price = newPrice; AddDomainEvent(new PriceUpdatedEvent(Id, newPrice)); }}
Usar un repositorio — Reciba la interfaz, no la implementación — y pase una especificación en lugar de escribir la consulta dos veces.
C#
public class ProductService{ private readonly IRepository<Product> _repository; public ProductService(IRepository<Product> repository) { _repository = repository; } public async Task<Product> GetByIdAsync(int id) { return await _repository.GetByIdAsync(id); } public async Task<IEnumerable<Product>> GetActiveProductsAsync() { var spec = new ActiveProductsSpecification(); return await _repository.GetAsync(spec); }}
Superficie pública
NAMESPACE
SUPERFICIE PÚBLICA
IRepository<T>
El contrato genérico de repositorio, con las operaciones CRUD básicas.
Entity<TKey>
La clase base de una entidad de dominio con clave tipada.
ISpecification<T>
El contrato para implementar el patrón de especificación.
¿Prefieres leer código?
Todos los paquetes son MIT y públicos, y los ejemplos son para copiar y pegar.