Wie force EF Code First die Datenbank Abfragen?
Ich habe eine Website verwalten eine Sammlung von Regeln und eine separate Windows-form-Anwendung zu machen auf Datei-Ebene-änderungen auf der Grundlage der Regeln in die Datenbank.
Beide Anwendungen verwenden die gleichen Bibliotheken für eine EF Code First DbContext, aber jede Anwendung ist die Instanziierung Ihre eigene Kopie der Kontext.
Das problem ist, jede version von dem Kontext, der nichts von den änderungen, die die andere version. E. g. Wenn ich eine Regel ändern, die auf der Website, die Formulare app hat immer noch die Vorherige version.
Ich bin mir bewusst, dass ich wahrscheinlich zu dieser falschen Weg, und sollte irgendeine Art den Zugriff auf die Daten via JSON/REST von der Website mit dem Formular app, aber ich würde lieber nicht aus anderen Gründen.
Gibt es eine Möglichkeit auf "disable caching" auf den Kontext und die Kraft, jedes query-hit der DB?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, es gibt keinen Weg, um das caching zu deaktivieren. Sie müssen manuell festlegen, jede Abfrage, um Daten-reaload. Dieses feature ist nicht verfügbar mit DbContext-API => müssen Sie ObjectContext-API.
Oder einfachere Szenario: bessere context-management, wenn möglich, und statt ausführen von Abfragen auf dem gleichen Kontext uns eine neue.
Btw. Idee, service-ausgesetzt in der winform-Anwendung und verbraucht es durch die web-site ist falsch. Sie müssten Dritte service-Anwendung (hosted on web server oder als windows-Dienst) und sowohl website-und winform-Anwendung access-Datenbank durch, die neue Anwendung. EF wäre nur in der neuen Anwendung.
Edit:
Wenn Ihr WinForm-Anwendung keine änderungen an Daten aus der Datenbank geladen, können Sie auch dieses verwenden:
Dieser schaltet sich interne change tracking von Personen und es sollte auch force EF-reload-Einheit jedes mal, aber es wird das speichern von änderungen viel schwieriger.