मैं अपने ईएफ 4 (मॉडल पहले) एप्लिकेशन में ऑडिटिंग जोड़ने की प्रक्रिया में हूं। मैं उन परिवर्तनों पर संरचनात्मक गुणों के बारे में विवरण प्राप्त कर सकता हूं जिनमें परिवर्तन हैं। मैं यह भी देख सकता हूं कि कई रिश्तों में कई बदलाव हुए हैं। मैं शामिल प्रकारों का नाम देख सकता हूं और क्या हुआ (जोड़ें या हटाएं) लेकिन मुझे वास्तव में क्या पसंद आएगा, यह संबंध है कि संबंधों में शामिल इकाइयों की आईडी है।ईएफ 4 ऑडिट कई रिश्तों में कई लोगों के परिवर्तन
यहाँ मैं वर्तमान में कई रिश्तों के लिए कई करने के लिए ट्रैकिंग परिवर्तन के लिए है:
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);
}
}
मैं विवरण (या यहां तक कि वास्तविक संस्थाओं) संबंध परिवर्तन में शामिल कैसे मिल सकता है?
अद्यतन
कुछ और घंटे मैं जानकारी की आवश्यकता को खोजने में कामयाब रहे है पर चारों ओर poking के बाद (संलग्न छवि देखें)। हालांकि, डेटा स्टोर करने वाले वर्ग आंतरिक मुहरबंद वर्ग हैं और मुझे इस जानकारी को वापस पाने के लिए ऑब्जेक्ट स्टेट मैनेजर से पूछताछ करने के लिए सार्वजनिक प्रविष्टि नहीं मिल रही है। तो मैं परिवर्तन का लेखा परीक्षा कर सकता हूं।
क्या तुमने कभी यह पता लगा था? – DDiVita
नहीं, लेकिन मुझे याद है कि @Icrepas के विकल्प को आशाजनक लग रहा था, मैं बस कोशिश करने के लिए गोल नहीं आया था। – ilivewithian