verwendetes Datenbanksystem: EF 4.0 + MSSQL
Hallo zusammen,
ich benutze in meiner Anwendung das EF zum Zugriff auf die Datenbank. Nun habe ich in einem anderen Beitrag gelesen, dass der DB-Context so kurzlebig wie nötig sein sollte. Demnach sollten die Entities auch nur zum Zugriff genutzt werden und nicht in den Objekten gespeichert werden.
Wie bekomme ich es jedoch hin, dass ich Änderungen in der Datenbank mitbekomme, die irgendwo anders in der GUI geschehen, bzw. durch Aufrufe an externe Services geschehen?
Vielen Dank!
Hallo,
Das EF ist ein O/R-Mapper, der auf das Persistieren von Daten ausgelegt ist. Also ist es korrekt, dass dein DataContext ein kürzere Lebensspanne haben sollte, da er sich nicht darum kümmern sollte deine Domain Klassen Objekte zu informieren wenn sich Daten in der DB ändern.
Dein Problem bezieht sich in diesem Fall denke ich eher auf die Architektur deiner Software. Wenn du Daten irgendwo anzeigst solltest du diese auch jedesmal neu laden wenn mehrere gleichzeitige Verbindungen auf die Datenbank sein können.
Korrekt.
Korrekt wäre es auch, dass das Holen der Daten pro Fenster über einen eigenen Context erfolgt. Das heisst zeitgleich, dass sich mehrere Fenster nicht kennen, wie auch dessen Verbindungen sich nicht kennen.
Ergo fällt hier ein Reporting nach diesem Schema untereinander flach.
Du hast nun die Möglichkeit das über eine zentrale Stelle Deiner Anwendung zu zentralisieren oder Du kombinierst SqlDependency mit dem Entity Framework.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code