Middle
¿Qué es el seguimiento de cambios (change tracking)?
sobes.tech AI
Respuesta de la IA
El seguimiento de cambios es un mecanismo en ORM (Object-Relational Mapper), como Entity Framework, que rastrea el estado de las entidades (objetos) cargadas en el contexto de datos. Determina qué entidades han sido añadidas, modificadas o eliminadas, para que al guardar los cambios en la base de datos se ejecuten los comandos correspondientes INSERT, UPDATE o DELETE.
Estados de las entidades:
- Added: Objeto recién creado y añadido al contexto, pero aún no guardado en la base de datos.
- Unchanged: Objeto cargado desde la base de datos o guardado, sin cambios realizados.
- Modified: Uno o más atributos del objeto han sido modificados después de cargarlo desde la base de datos o guardarlo.
- Deleted: Objeto marcado para ser eliminado de la base de datos.
- Detached: Objeto que no es rastreado por el contexto de datos.
// Ejemplo de seguimiento de cambios en Entity Framework Core
using (var context = new MyDbContext())
{
// Cargar entidad
var myEntity = context.MyEntities.Find(1);
// Ver estado inicial
Console.WriteLine($"Estado inicial: {context.Entry(myEntity).State}"); // Mostrará Unchanged
// Modificar propiedad
myEntity.MyProperty = "Nuevo Valor";
// Ver estado después de la modificación
Console.WriteLine($"Estado después de la modificación: {context.Entry(myEntity).State}"); // Mostrará Modified
// Añadir una nueva entidad
var newEntity = new MyEntity { MyProperty = "Otra Nueva" };
context.MyEntities.Add(newEntity);
// Ver estado de la entidad añadida
Console.WriteLine($"Estado de la nueva entidad: {context.Entry(newEntity).State}"); // Mostrará Added
// Marcar entidad para eliminación
context.MyEntities.Remove(myEntity);
// Ver estado después de la eliminación
Console.WriteLine($"Estado después de la eliminación: {context.Entry(myEntity).State}"); // Mostrará Deleted
// Guardar cambios en la base de datos
context.SaveChanges();
}