Entity Framework Übergeben Sie ein Objekt von einem Kontext an einen anderen

9

Ich bin neu im Entity Framework, also bitte habt Geduld mit mir.

Ich habe ein Programm, das mehrere Datensätze aus einer Tabelle auswählen und in einer Warteschlange speichern soll:

%Vor%

Dann spanne ich mehrere Worker-Threads hoch. Jeder Worker-Thread nimmt eines der Elemente in der Warteschlange, verarbeitet es und speichert es anschließend in der Datenbank.

%Vor%

Ich verstehe, dass Änderungen in der Datenbank gespeichert werden, die Sie gerade context.SaveChanges () aufrufen, aber das kann ich in dieser Situation nicht tun, oder?

Jede Hilfe ist willkommen.

Danke!

    
jkruer01 28.01.2013, 22:22
quelle

2 Antworten

8

Da Sie Ihren MyEntity -Kontext in der ersten Methode bereitstellen (indem Sie ihn in eine using -Anweisung einfügen), befinden sich die Entitäten, die in die Warteschlange eingereiht werden, in einem Zustand "detached". Das bedeutet unter anderem, dass Änderungen an der Entität nicht verfolgt werden und Sie nicht in der Lage sein werden, Navigationseigenschaften zu laden.

Es ist vollkommen in Ordnung, diese Entitäten aus der Warteschlange zu entfernen, sie an einen anderen Kontext anzuhängen, sie zu aktualisieren und dann SaveChanges aufzurufen, um die Änderungen zu übernehmen.

Sie können über Objekte hinzufügen und entfernen und < a href="http://msdn.microsoft.com/en-us/data/jj592676.aspx"> Hinzufügen / Anhängen und Entitätsstatus

    
khellang 28.01.2013, 22:47
quelle
2

Es ist möglicherweise sicherer, wenn Sie stattdessen den Primärschlüssel in der Warteschlange speichern und die Entitäten erneut abrufen. Auf diese Weise vermeiden Sie Probleme mit Datenkonkurrenzen.

    
Sacrilege 28.01.2013 22:47
quelle