2012-10-25 9 views
11

मैं एक परमाणु ऑपरेशन में चेक-अप-अपडेट करना चाहता हूं। मैं लेनदेन का प्रबंधन करने के लिए dbcontext का उपयोग कर रहा हूँ। अगर किसी अन्य धागे द्वारा रिकॉर्ड संशोधित किया गया है तो मुझे अपवाद प्राप्त होने की उम्मीद थी लेकिन कोई अपवाद नहीं फेंक दिया गया था। किसी भी सहायता की सराहना की जाएगी।ईएफ 5.0 कोड का उपयोग कर समवर्ती जांच को कैसे सक्षम करें?

Thread-4: Reading... 
Thread-5: Reading... 
Thread-5: Updating destination 1 
Thread-4: Updating destination 1 
Thread-4: SaveChanges 
Thread-5: SaveChanges 

यहाँ मेरी कोड स्निपेट है:: यहाँ मेरी उत्पादन है

public static void Main(string[] args) 
{ 
    PopulateData(); 
    (new Thread(UpdateDestination1)).Start(); 
    (new Thread(UpdateDestination1)).Start(); 
} 

public static void UpdateDestination1() 
{ 
    using (var context1 = new BreakAwayContext()) 
    { 
     Console.WriteLine("Thread-{0}: Reading...", Thread.CurrentThread.ManagedThreadId); 
     var d = context1.Destinations.FirstOrDefault(); 
     Console.WriteLine("Thread-{0}: Updating destination {1}", Thread.CurrentThread.ManagedThreadId, d.DestinationId); 
     d.Name = "Thread-" + Thread.CurrentThread.ManagedThreadId; 
     try 
     { 
      context1.SaveChanges(); 
      Console.WriteLine("Thread-{0}: SaveChanges", Thread.CurrentThread.ManagedThreadId); 
     } 
     catch (OptimisticConcurrencyException) 
     { 
      Console.WriteLine("OptimisticConcurrencyException!!!"); 
      throw; 
     } 
    } 
} 

उत्तर

19

आप जब धाराप्रवाह एपीआई के साथ एक संपत्ति को विन्यस्त एक संपत्ति (http://msdn.microsoft.com/en-us/data/gg193958.aspx) या IsConcurrencyToken() या .IsRowversion पर ConcurrencyCheck एनोटेशन का उपयोग कर सकते (http://msdn.microsoft.com/en-us/data/jj591617#1.12)। आमतौर पर आपके पास डेटाबेस में एक पंक्तिवर्धक कॉलम होगा।

+0

यह काम किया। धन्यवाद! – user1342718

+0

फिर इसे उत्तर के रूप में चिह्नित करें। – Pawel

+0

मैंने कोशिश की। यह कहा गया "वोट अप 15 प्रतिष्ठा की आवश्यकता है"। माफ़ कीजिये। – user1342718

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