Linq-Caching von Datenwerten - Hauptproblem bei gleichzeitiger Verwendung?

Hier ist ein kleines Experiment, das ich gemacht habe:

MyClass obj = dataContext.GetTable<MyClass>().Where(x => x.ID = 1).Single();
Console.WriteLine(obj.MyProperty); // output = "initial"
Console.WriteLine("Waiting..."); // put a breakpoint after this line
obj = null;
obj = dataContext.GetTable<MyClass>().Where(x => x.ID = 1).Single(); // same as before, but reloaded
Console.WriteLine(obj.MyProperty); // output still = "initial"
obj.MyOtherProperty = "foo";
dataContext.SubmitChanges(); // throws concurrency exception

Wenn ich nach Zeile 3 den Haltepunkt erreiche, gehe ich zu einem SQL-Abfragefenster und ändere den Wert manuell auf "updated". Dann laufe ich weiter. Linq lädt mein Objekt nicht neu, sondern verwendet das zuvor gespeicherte Objekt erneut! Das ist einenorm Problem für die Datengleichzeitigkeit!

Wie können Sie diesen versteckten Cache von Objekten deaktivieren, die Linq offensichtlich im Speicher behält?

BEARBEITEN - Nachdenklich ist es einfach undenkbar, dass Microsoft im Linq-Framework eine so klaffende Kluft hinterlassen hat. Der obige Code ist eine heruntergekommene Version dessen, was ich gerade mache, und es kann kleine Feinheiten geben, die ich übersehen habe. Kurz gesagt, ich würde mich freuen, wenn Sie Ihre eigenen Experimente durchführen würden, um zu überprüfen, ob meine obigen Ergebnisse korrekt sind. Alternativ muss es eine Art "geheimen Schalter" geben, der Linq robust gegen gleichzeitige Datenaktualisierungen macht. Aber was?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage