Wie kann ich eine Entity Framework-Verbindung aktualisieren, ohne den Kontext zu entfernen?

8

Nach ein paar Jahren, in denen wir Entity Framework ohne Probleme in unseren Anwendungen eingesetzt haben, hat unser Unternehmen begonnen, Laptops für unsere Benutzer bereitzustellen. Die Laptops werden vor Ort mit einer direkten kabelgebundenen Verbindung zu unserem Netzwerk verwendet.

Seitdem haben wir eine große Zunahme von Abstürzen in unseren Programmen festgestellt, mit den Ausnahmeprotokollen

%Vor%

Meine Theorie ist, dass das Problem von der Tatsache herrührt, dass die Laptops im Gegensatz zu den PCs schlafen gehen. Ich denke, dass der Netzwerkadapter deaktiviert wird, wenn der Laptop in den Ruhezustand versetzt wird, und wieder aktiviert wird, wenn es wieder aufwacht. Ich denke, unsere Programme versuchen immer noch mit dem Server über eine Verbindung zu kommunizieren, die nicht mehr da ist.

Also, meine Idee war, zu antworten:

%Vor%

Ich kann erkennen, wenn es aufwacht und die Verbindung aktualisieren. Das Problem ist, dass der einzige Weg, wie ich das tun kann, ist, den aktuellen DbContext zu entfernen und einen neuen zu erstellen.

Das Problem dabei ist, dass nicht festgeschriebene Änderungen verloren gehen. Wenn der Benutzer den ganzen Tag an der Aktualisierung eines Datensatzes gearbeitet hat, würde er seine Arbeit verlieren. Nicht nur das, aber wir müssten alle unsere Anwendungen und alle unsere Ansichtsmodelle durchgehen und eine Art von Bearbeitungsmodus mit Benachrichtigungen für den Benutzer integrieren. Ganz und gar nicht hübsch.

Eine zweite Idee, die ich hatte, war eine Methode zum Klonen eines DbContext zu erstellen. Wenn der Computer aufwacht, könnte ich einen neuen DbContext erstellen und den Zustand aus dem alten kopieren, bevor ich ihn entsorgere. Aber einige unserer Datenmodelle sind massiv, und eine tiefgreifende Klonmethode für jede zu erstellen, wäre eine ziemliche Herausforderung.

Es kommt mir vor, dass dies immer noch die Art und Weise ist, wie wir gehen müssen ... aber ich wäre dumm, nicht zu überprüfen, ob irgendjemand einen Weg kennt, die Verbindung eines Entity Framework DbContext zu aktualisieren, ohne seinen aktuellen Zustand zu verlieren .

Ich würde mich über jeden Rat freuen, den jemand haben könnte.

    
Chronicide 20.10.2015, 15:45
quelle

2 Antworten

3

Ich bin mir nicht sicher, ob es in Ihrem speziellen Fall helfen wird, aber Sie können den Status der von Ihrer DbConetxt -Klasse verwendeten Verbindung überprüfen und eventuell erneut öffnen.

%Vor%

es ist auch möglich, eine Verbindung zu dem DbContext in seinem Konstruktor zu übergeben und diese Verbindung manuell zu verwalten.

%Vor%

Es gibt einige Einschränkungen, wenn Sie diesen Code in der Version EF 5 oder früher verwenden möchten. Siehe offizielle Dokumentation.

    
Lukas Kabrt 20.10.2015 19:05
quelle
0

Ich wollte nur kommentieren, aber ich habe nicht genügend Reputationspunkte, um das zu tun, also habe ich mich gefragt, ob es nicht möglich ist, mit Entity Framework in einem getrennten Zustand zu arbeiten. Vielleicht kann der Artikel im folgenden Link helfen:

Ссылка

    
Dino Bansigan 20.10.2015 16:21
quelle

Tags und Links