• Webseitenerstellung und -hosting
  • .NET Anwendungsentwicklung
  • softwaregesteuerte Prozessoptimierung
  • .NET

    Programmierung

  • WebseitenErstellung

    undHosting

  • softwaregesteuerte

    Prozessoptimierung

  • Konzeption

    und Beratung

%AM, %01. %523 %2013 %11:%Feb

Eine neue Transaktion ist unzulässig, weil in dieser Sitzung andere Threads ausgeführt werden.

geschrieben von
Artikel bewerten
(3 Stimmen)

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 

Gelesen 3267551 mal Letzte Änderung am %AM, %03. %427 %2015 %09:%Aug

26036 Kommentare

Schreibe einen Kommentar

Bitte achten Sie darauf, alle Felder mit Stern * zu füllen. HTML-Code ist nicht erlaubt.