Я нахожусь в процессе добавления аудита в мое приложение EF4 (сначала модель).Я могу получить подробную информацию о структурных свойствах объектов, которые имеют изменения.Я также могу видеть, когда произошли изменения в отношениях многих ко многим.Я могу видеть название задействованных типов и то, что произошло (добавить или удалить), но мне бы очень хотелось, чтобы идентификаторы сущностей, которые участвуют в изменении отношений.
Вот то, что у меня есть в настоящее времядля отслеживания изменений отношения многих ко многим:
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);
}
}
Как я могу получить детали (или даже фактические сущности), связанные с изменением отношений?
ОБНОВЛЕНИЕ
Поработав еще несколько часов, мне удалось найти нужную мне информацию (см. Прикрепленное изображение).Однако классы, в которых хранятся данные, являются внутренними запечатанными классами, и я не могу найти общедоступную запись для запроса менеджера состояния объекта, чтобы получить эту информацию обратно.Так что я могу проверить изменения.