2013-02-19 14 views
6

Resolving optimistic concurrency exceptions with Reload (database wins) देखें:समझना इकाई की रूपरेखा आशावादी संगामिति (डेटाबेस जीतता) पैटर्न

using (var context = new BloggingContext()) 
{ 
    var blog = context.Blogs.Find(1); 
    blog.Name = "The New ADO.NET Blog"; 
    bool saveFailed; 
    do 
    { 
     saveFailed = false; 

     try 
     { 
      context.SaveChanges(); 
     } 
     catch (DbUpdateConcurrencyException ex) 
     { 
      saveFailed = true; 

      // Update the values of the entity that failed to save from the store 
      ex.Entries.Single().Reload(); 
     } 

    } while (saveFailed); 
} 

क्यों विधि SaveChanges()Reload() के बाद कहा जाता है? यह कॉल डेटाबेस में डेटा को कभी भी नहीं बदलेगा।

उत्तर

3

मैं मानता हूं कि यह बहुत स्पष्ट नहीं है। कोड के इस टुकड़े का इरादा वाक्य

इकाई को आम तौर पर उपयोगकर्ता को किसी रूप में वापस दिया जाता है और उन्हें फिर से अपने परिवर्तन करने और फिर से सहेजने की कोशिश करनी चाहिए।

तो यह बेहतर होता अगर वे एक टिप्पणी की थी:

... 
// User evaluates current values and may make new changes. 
try 
{ 
    context.SaveChanges(); 
} 
... 
संबंधित मुद्दे