我正在將審覈添加到我的EF4(模型優先)應用程序中。我可以得到關於具有變化的實體的結構特性的細節。我還可以看到多對多關係何時發生變化。我可以看到涉及的類型的名稱和發生的事情(添加或刪除),但我真正喜歡的是涉及關係變更的實體的Id。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);
}
}
我怎樣才能參與到關係變化的細節(甚至實際的實體)?
UPDATE
上閒逛了幾個小時,我設法找到我需要的信息後(見附件圖片)。但是,存儲數據的類是內部密封類,我無法找到公開條目來查詢對象狀態管理器以獲取此信息。所以我可以審覈變更。
你有沒有想出解決辦法? – DDiVita
不,但我記得@Icrepas的選項看起來很有前途,我只是沒有試着去嘗試它。 – ilivewithian