7

मेरे डीबीकॉन्टेक्स्ट सबक्लास पर जेनेरिक ऑडिट कोड लिखना चाहते हैं।इकाई फ्रेमवर्क बदलें ट्रैकिंग API और संदर्भ प्रविष्टियां

foreach (var entry in this.ChangeTracker.Entries<MyClass>()) 
{ 
    if (entry.State == EntityState.Modified) 
    { 
     var entityProperties = entry.Entity.GetType().GetProperties(); 
     foreach (var entityProperty in entityProperties) 
     { 
      DbMemberEntry propertyEntry = entry.Member(property.Name); 
      if (propertyEntry is DbPropertyEntry) 
      { 
       // IsModified available 
      } 
      else if (propertyEntry is DbReferenceEntry) 
      { 
       // IsModified not available 
      } 
     } 
    } 
} 

1) यदि मैं केवल संदर्भ संपत्ति बदलता हूं, तो प्रविष्टि। स्टेटस मान "अपरिवर्तित" है।

2) भले ही बिंदु 1 को "संशोधित" पर सेट किया गया हो, DbReferenceEntry क्लास में एक IsModified गुण नहीं है, न ही मूल मान।

मुझे लगता है कि यह संभव है क्योंकि ईएफ को यह ट्रैक करना होगा।

क्या कोई मदद कर सकता है?

धन्यवाद, बेन

उत्तर

6

परिवर्तन हाँ संदर्भ प्रविष्टि (नेविगेशन संपत्ति) को ट्रैक नहीं करता। यह विदेशी कुंजी संपत्ति (विदेशी कुंजी संघ के मामले में) या स्वतंत्र संगठन के अलग ऑब्जेक्ट ट्रैकिंग परिवर्तन की ज़िम्मेदारी है। ऑब्जेक्ट कॉन्टेक्स्ट एपीआई में आप इन ऑब्जेक्ट्स को ObjectStateManager से प्राप्त कर सकते हैं लेकिन ऐसा लगता है कि डीबीकॉन्टेक्स्ट एपीआई में यह उपलब्ध नहीं है। मैंने इस बारे में MSDN Forum पर एक प्रश्न पूछा।

संबंधित मुद्दे