2010-12-28 3 views
0

Ich habe die folgenden Zweifel über Kontexte in Entity Framework:Welche Daten sehen eine Gruppe von EntityManagers, wenn einer von ihnen Änderungen aktualisiert oder speichert?

Angenommen, dass es drei Kontexte d1, d2 und d3 gibt. Jeder Kontext wurde zu verschiedenen Zeitpunkten im Ausführungsfluss der Anwendung instanziiert (d3, nach d2 und d2, nach d1). Wenn die Anwendungslogik einige von d2 verwaltete Entitäten ändert und d2.SaveChanges() ausführt (oder eine Operation, die ein Update oder ein Create beinhaltet), werden Änderungen nach d2 und SaveChanges() von d3 und d1 erkannt?

Könnten Sie eine Bibliographie zur Verfügung stellen, die Ihre Antwort unterstützt?

Antwort

1

Sie werden nur angezeigt, nachdem Sie sie aus dem Datenspeicher aktualisieren. Änderungen in d2 wirken sich nicht auf andere Kontexte aus. d1 und d3 enthalten Daten im Status, die Sie aus der Datenbank abgerufen haben, bevor Änderungen in d2 vorgenommen werden. Wenn Sie den aktuellen Status wünschen, müssen Sie die Daten selbst aktualisieren. Wenn dies automatisch gemacht würde, wäre es nicht sehr effizient. Deshalb sollte das Leben des Kontexts auch kurz sein. Wenn Sie es zu lange halten, enthält es veraltete Entitäten.

+0

Können Sie mir eine Bibliographie oder Links geben? – JPCF

+0

Ein Kontext verhält sich also so, als wäre es eine Art von Transaktion? – JPCF

+0

http://msdn.microsoft.com/en-us/library/bb738470.aspx - Jeder ObjectContext verfügt über ObjectStateManager, der lokale Kopien von Entitäten enthält, die aus der Datenbank abgerufen werden. Wenn Sie Entitäten im d1-Kontext ändern, ändert sich der ObjectStateManager in d2 nicht, er enthält immer noch dieselben Werte. Dies geschieht natürlich nur dann, wenn d2 die Daten, die vor der Änderung durch d1 geändert wurden, abruft. – LukLed

Verwandte Themen