oder auf Englisch: New transaction is not allowed because there are other threads running in the session. Szenario: In einer Schleife werden Objekte einer Tabelle verarbeitet und nach erfolreicher verarbeitung als "verarbeitet" markiert. Dabei schlägt der context.savechanges des Enityty Frameworks fehl. der Grund ist sowohl simple als auch, zumindest für mich, anfänglich nicht ganz verständlich, da ich eben an dieser Stelle speichern möchte. Die verwendete EF Connection behält die Änderungen des Objects bei und setzt diese auf "modified", so dass ein einmaliges savechanges genügt um alle Objekte zu speichern. Das Kuriose ist, dass es EF das nicht einmal zulässt, selbst wenn man die schlechtere Performance in Kauf nehmen wollte. Schuld ist die Schleife, die Objekte zur Laufzeit aus dem Context liest und so eine Änderung nicht zulässt...
Using db as new EF_Context Dim jobs = From w In db.jobs Where Not w.verarbeitet.HasValue For Each job In jobs 'Verarbeitung If verarbeite_job(job) = true then 'abhaken job.verarbeitet = now 'db.savechanges 'SCHLÄGT FEHL!!! else 'loggen endif Next db.SaveChanges 'HIER ISSES RICHTIG End Using