Entity Framework ObjectContext in der Windows / WPF / Silverlight-Anwendung

Wir schreiben eine WPF-Anwendung unter Verwendung des Entity-Frameworks (genauer gesagt Silverlight mit RIA-Diensten). Wir verwenden einen gemeinsam genutzten ObjectContext über die Anwendung, damit wir von der gemeinsamen Nutzung von Daten über die Module hinweg profitieren können.

Das Problem ist - wenn der Benutzer während seiner Arbeit beispielsweise historische Verkäufe öffnet, wird er in den ObjectContext geladen und bleibt dort bis zum Ende der Anwendung. Also sollte ein anderes Muster verwendet werden.

Ich weiß, dass ObjectContexts als einzelne Arbeitseinheit verwendet werden sollte. Aber wie können Sie dann anderen Teilen der Anwendung mitteilen, dass sich etwas geändert hat und sie ihre Daten neu laden sollten?

Edit: Ok, EventAggregator, aber dann würde dies dazu führen, dass alle anderen Teile ihre (wahrscheinlich viel davon duplizierten) Daten neu laden. Wahrscheinlich werden auch viele Veranstaltungen für alle Arten von Gruppen benötigt.

Wie lösen Sie diese Probleme? Meine derzeitige Lösung ist eine Art Kompromiss: Verwenden Sie einen gemeinsam genutzten ObjectContext für die Kerndaten, die von der gesamten Anwendung verwendet werden, damit sie automatisch gemeinsam genutzt und aktualisiert werden können. Verwenden Sie für die große Datenmenge einen neuen separaten ObjectContext. Irgendwelche besseren Ideen?

Gibt es eine Möglichkeit, Entitäten aus ihrem DataContext "freizugeben", damit der Garbage Collector seine Arbeit erledigen und den Speicher freigeben kann?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage