Ich möchte eine Überprüfung-dann-Aktualisierung in einer atomaren Operation durchführen. Ich verwende dbcontext, um die Transaktion zu verwalten. Ich habe erwartet, eine Ausnahme zu erhalten, wenn der Datensatz von einem anderen Thread geändert wurde, aber keine Ausnahme ausgelöst wird. Jede Hilfe wäre willkommen. Hier ist meine Ausgabe:So aktivieren Sie die Parallelitätsprüfung mit EF 5.0-Code zuerst?
Thread-4: Reading...
Thread-5: Reading...
Thread-5: Updating destination 1
Thread-4: Updating destination 1
Thread-4: SaveChanges
Thread-5: SaveChanges
Hier ist mein Code-Schnipsel:
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;
}
}
}
Das hat funktioniert. Vielen Dank! – user1342718
Dann markieren Sie es als Antwort. – Pawel
Ich habe versucht. Es sagte: "Vote Up erfordert 15 Ruf". Es tut uns leid. – user1342718