Skip to main content

Extensiones útiles

Crono incluye numerosos métodos de extensión para trabajar con el DbContext, los DbSet y el rastreador de cambios de forma más cómoda (Crono.Datos.Extensiones).

Extensiones de DbSet

MétodoDescripción
BuscarPorIdAsync(id, rastreado = true)Busca una entidad por su id. Si ya está rastreada por el contexto, se devuelve de inmediato sin consultar la base de datos; si no, se consulta. Con rastreado: true la entidad queda adjunta al contexto.
ObtenerVariosAsync(ids)Carga muchas entidades ordenadas según la secuencia de ids indicada (el orden se aplica en memoria).
EliminarTodosAsync()Trunca/borra la tabla del tipo de entidad.
ObtenerDbContexto()Resuelve la instancia de DbContext de la que proviene un DbSet.
// Devuelve la entidad rastreada si ya está en memoria; si no, consulta la BD
var prestamo = await _db.Prestamos.BuscarPorIdAsync(prestamoId);

// Solo lectura (sin rastreo)
var prestamo = await _db.Prestamos.BuscarPorIdAsync(prestamoId, rastreado: false);

Extensiones de DbContext

Entre las más útiles:

  • CargarColeccionAsync / CargarReferenciaAsync — cargan una propiedad de navegación (colección o referencia) desde la base de datos, salvo que ya esté cargada.
  • Estado de navegación — comprobar si una colección o referencia ya se cargó (ansiosa o diferidamente) antes de acceder a ella.
  • Conexión — abrir y retener la conexión hasta el fin del ámbito, para ganar algo de velocidad en procesos largos (ver también DbContextoAmbito).

Rastreador de cambios

Las extensiones del change tracker (ChangeTrackerExtensiones, EntityEntryExtensiones) ayudan a inspeccionar el estado de las entidades:

  • Comprobar si hay cambios pendientes (alguna entidad en estado Agregado, Modificado o Eliminado).
  • Obtener las propiedades modificadas de una entidad y su valor original (útil dentro de un interceptor PreGuardado; ver Interceptores).
  • Cambiar el estado de una entidad, desasociarla del contexto o recargarla desde la base de datos sobrescribiendo sus valores.
info

Estas extensiones evitan reescribir código repetitivo de EF y hacen las consultas y operaciones más legibles. Combínalas con las extensiones de consulta (*ConsultaExtensiones) para encapsular filtros reutilizables (ver Acceso a datos).