Jestem w trakcie dodawania audytu do mojej aplikacji EF4 (pierwszy model). Mogę uzyskać szczegółowe informacje na temat właściwości strukturalnych dla jednostek, które mają zmiany. Mogę też zobaczyć, kiedy nastąpiły zmiany w związku wielu do wielu. Widzę nazwę typów, które się z nimi wiążą i co się stało (dodawanie lub usuwanie), ale to, co naprawdę chciałbym, to identyfikatory podmiotów uczestniczących w zmianie relacji.EF4 Zmiany w inspekcji wielu do wielu relacji
Oto co obecnie mam do śledzenia zmian na wiele do wielu relacji:
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);
}
}
Jak mogę uzyskać szczegóły (lub nawet rzeczywistych podmiotów) zaangażowanych w zmianę relacji?
UPDATE
Po wywiercenie się przez kilka godzin udało mi się znaleźć informacje potrzebne (patrz załączony obrazek). Jednak klasy przechowujące dane są wewnętrznymi klasami zapieczętowanymi i nie mogę znaleźć publicznego wpisu w celu wysłania zapytania do menedżera stanu obiektu, aby odzyskać te informacje. Mogę więc kontrolować zmianę.
czy kiedykolwiek tego dowiedzieć? – DDiVita
Nie, ale pamiętam, że opcja z @Icrepas wyglądała obiecująco, po prostu nie chciałem jej wypróbować. – ilivewithian