Sobes.tech
Middle

¿Qué es el seguimiento en Entity Framework?

sobes.tech AI

Respuesta de la IA

El seguimiento (Entity Tracking) es un mecanismo en Entity Framework Core que realiza un seguimiento de los cambios realizados en los objetos de entidad cargados desde la base de datos. El contexto almacena información sobre el estado de cada entidad cargada y puede generar consultas SQL para actualizar la base de datos al guardar los cambios (DbContext.SaveChanges()).

Estados principales de las entidades:

  • Added: La entidad ha sido añadida al contexto, pero aún no existe en la base de datos.
  • Unchanged: La entidad ha sido cargada desde la base de datos y sus propiedades no han sido modificadas.
  • Modified: Algunas propiedades de la entidad han sido modificadas desde su carga desde la base de datos.
  • Deleted: La entidad ha sido marcada para eliminación de la base de datos.
  • Detached: La entidad no está siendo rastreada por el contexto.

Por defecto, las entidades se rastrean al trabajar con consultas LINQ. Esto permite que Entity Framework determine automáticamente qué cambios deben guardarse.

Ejemplo de indicación explícita de seguimiento:

// Consulta rastreada
var trackedUser = context.Users.FirstOrDefault(u => u.Id == 1);

// Consulta no rastreada
var untrackedUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == 2);

Desactivar el seguimiento con AsNoTracking() puede mejorar el rendimiento al ejecutar consultas si no necesita guardar cambios en la base de datos, ya que EF no gasta recursos en rastrear el estado de las entidades.