2013-06-04 17 views
5

मैं अपने स्वयं के संदर्भों में कोड निष्पादित कर रहा हूं, लेकिन यह मुख्य धागे संदर्भ में डेटा को सिंक से बाहर कर रहा है। इसलिए मुझे इसे अपडेट करने से पहले अन्य संदर्भों को पूरा करने के बाद इकाई को रीफ्रेश करने की आवश्यकता है।इकाइयों को लोड किया गया था या हटा दिया गया था क्योंकि इकाइयों को लोड किया गया था

दुर्भाग्यवश, मुझे आशावादी कॉनकुरेंसी अपवाद मिल रहा है और यह पता नहीं लगा सकता कि यह कौन सी इकाई है और यह ताज़ा होने की आवश्यकता है? क्या यह पता लगाने का एक तरीका है कि यह कौन सी इकाई है जो OptimisticConcurrencyException का कारण बन रही है? यह संदेश बिल्कुल उपयोगी नहीं है ...

System.Data.Entity.Infrastructure.DbUpdateConcurrencyException: स्टोर अद्यतन, सम्मिलित करने या हटाने के बयान पंक्तियों की एक अप्रत्याशित संख्या प्रभावित (0)। संस्थाओं को संशोधित या हटा दिया गया है क्योंकि इकाइयों लोड किए गए थे। ऑब्जेक्टस्टेट प्रबंधक प्रविष्टियों को ताज़ा करें। ---> System.Data.OptimisticConcurrencyException: स्टोर अपडेट, डालने, या हटाएं कथन ने पंक्तियों की एक अप्रत्याशित संख्या प्रभावित की है (0)। इकाइयों को लोड होने के बाद से संशोधित या हटा दिया गया हो सकता है। रीफ्रेश ऑब्जेक्टस्टेट प्रबंधक प्रविष्टियां।

+0

शायद, 'DbUpdateConcurrencyException.Entries' संपत्ति सहेजी गई इकाइयों का पता लगाने में मदद कर सकती है। –

उत्तर

0

शायद सबसे अच्छा समाधान अन्य थ्रेड समाप्त होने के बाद मुख्य थ्रेड संदर्भ में केवल एक नया context बनाना होगा।

अन्यथा, यदि आपको context का पुन: उपयोग करने की आवश्यकता है, तो यहां आपके संदर्भ ऑब्जेक्ट को रीफ्रेश करने के लिए एक आसान तरीका है।

public void RefreshAll() 
    { 
     // Get all objects in state manager with entityKey 
     // (context.Refresh will throw an exception otherwise) 
     var refreshableObjects = (from entry in 
       ObjectContext.ObjectStateManager.GetObjectStateEntries(
                EntityState.Deleted 
                | EntityState.Modified 
                | EntityState.Unchanged) 
            where entry.EntityKey != null 
            select entry.Entity); 

     ObjectContext.Refresh(RefreshMode.StoreWins, refreshableObjects); 
    } 
संबंधित मुद्दे

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