Estoy en el proceso de agregar auditoría a mi aplicación EF4 (modelo primero). Puedo obtener los detalles sobre las propiedades estructurales en las entidades que tienen cambios. También puedo ver cuándo ha habido cambios en una relación de muchos a muchos. Puedo ver el nombre de los tipos involucrados y lo que sucedió (agregar o eliminar) pero lo que realmente me gustaría es identificar las entidades que están involucradas en el cambio de relación.EF4 Cambios de auditoría de muchas a muchas relaciones
Aquí es lo que tengo actualmente para el seguimiento de cambios de relaciones muchos a muchos:
var changes = context.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Deleted | EntityState.Modified);
var auditTime = DateTime.Now;
foreach (var change in changes)
{
if (change.Entity != null && change.Entity.GetType().Equals(typeof(AuditTrail)))
{
continue;
}
var detailsBuilder = new StringBuilder();
if (change.Entity == null & (change.State == EntityState.Added | change.State == EntityState.Deleted))
{
detailsBuilder.Append("A link between entities ");
foreach (var changedMember in change.EntitySet.ElementType.KeyMembers)
{
detailsBuilder.AppendFormat("{0}", changedMember.Name);
if(change.EntitySet.ElementType.KeyMembers.IndexOf(changedMember) < change.EntitySet.ElementType.KeyMembers.Count -2)
{
detailsBuilder.Append(", ");
}
else if (change.EntitySet.ElementType.KeyMembers.IndexOf(changedMember) == change.EntitySet.ElementType.KeyMembers.Count - 2)
{
detailsBuilder.Append(" and ");
}
}
detailsBuilder.AppendFormat(" was {0}.<br />", change.State);
}
}
¿Cómo puedo obtener los detalles (o incluso las entidades reales) que participan en el cambio de relación?
ACTUALIZACIÓN
Después de hurgar durante unas cuantas horas más he logrado encontrar la información que necesito (ver imagen adjunta). Sin embargo, las clases que almacenan los datos son clases internas selladas y no puedo encontrar una entrada pública para consultar al administrador de estado del objeto para recuperar esta información. Entonces puedo auditar el cambio.
¿alguna vez resolver esto? – DDiVita
No, pero recuerdo que la opción de @Icrepas parecía prometedora, simplemente no pude probarla. – ilivewithian