que tiene algo como esto:DbContext ChangeTracker: Id del Agregado Entidad de Auditoría
public override int SaveChanges()
{
foreach (var changeLog in this.ChangeTracker.Entries()
.Where(p => p.State == EntityState.Added ||
p.State == EntityState.Deleted ||
p.State == EntityState.Modified)
.SelectMany(entity => AuditRecords(entity)))
{
this.ChangeLogs.Add(changeLog);
}
return base.SaveChanges();
}
Pero, por supuesto, registros de cambios auditados no contendrán el valor de clave principal de la entidad cuando el EntityState está añadida (hasta después de SaveChanges). ¿Cómo puedo obtener el valor de la clave primaria para fines de auditoría de cambio?
Richard
Intenté algo así (obtener una lista de entradas), pero me encontré con problemas para acceder a ellos de nuevo, ya que se separaron después de guardar. – Richard
Solo las entidades eliminadas se separarán después de guardarlas. Si simplemente realiza un seguimiento de las entidades adicionales, que son las que necesita las claves, debería estar bien. –
@Richard No recomendaría usar las mismas instancias de entidad para la auditoría (ya que tiene sus propios tipos de entidad) que las que acabamos de actualizar. He actualizado mi respuesta para reflejar eso. – casperOne