Desarrollador .NET: pregunta de entrevista

¿Cómo funciona el change tracking de Entity Framework?

EF Core sigue identidad, valores originales y estado en un DbContext y genera updates en SaveChanges. Usa contextos cortos y AsNoTracking para consultas de solo lectura para reducir memoria y sorpresas.

Respuesta directa

Qué debe cubrir una buena respuesta

Cómo funciona

Un DbContext mantiene un mapa de identidad de cada entidad que ha cargado o adjuntado, junto con sus valores originales y un estado Unchanged, Modified, Added o Deleted. Cuando corre SaveChanges, el rastreador compara los valores actuales con los originales y genera sentencias UPDATE solo para las columnas cambiadas, en una única transacción. El seguimiento cuesta memoria y tiempo proporcionales al número de entidades, así que las consultas de solo lectura usan AsNoTracking, los contextos viven poco por unidad de trabajo, y las operaciones masivas usan ExecuteUpdate o ExecuteDelete en lugar de cargar filas para cambiarlas.

Ejemplo

Un endpoint de informes que cargaba 50.000 pedidos tardaba segundos y cientos de megabytes hasta que la consulta añadió AsNoTracking, tras lo cual corrió en una fracción del tiempo. En el mismo servicio, actualizar el estado de un pedido carga la entidad, cambia una propiedad y llama a SaveChanges, que emite un UPDATE de esa única columna y detecta un conflicto de concurrencia mediante la versión de fila.

Errores frecuentes

  • Mantener un DbContext vivo toda la aplicación acumulando cada entidad cargada.
  • Cargar un millón de filas para actualizar una bandera en lugar de usar ExecuteUpdate.
  • Adjuntar una entidad desconectada como Modified y sobrescribir todas las columnas, incluidas las que cambió otro usuario.

Una estructura útil para responder

Responde desde tu propia experiencia.

No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.

Practica esta respuesta con MiraHint

Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.

Descargar MiraHint
Preguntas de entrevista para Desarrollador .NET