DbContext-internen caching (?)
Habe ich meinen eigenen Kontext, die von DbContext erbt. Nehmen wir an, ich habe 1 Beitrag in meinem [Beiträge] - Tabelle in der Datenbank. Betrachten Sie dieses Szenario:
- Ich Frage DbContext für diese nur post für die ersten mal. Und DbContext gibt es wie erwartet.
- Ich das ändern einer Spalte in [Beiträge] Tabelle manuell.
- Ich aktualisieren meine Website = ich Frage DbContext für diesen post wieder.
- DbContext gibt eine post, die alten Wert für diese bestimmte Spalte!
Schaute ich in SQL Profiler, und die Datenbank IST der hit jedes mal, wenn ich aktualisieren meiner Seite, also warum die zurückgegebene post hat ein Alter Wert? Ich denke DbContext versucht, sehr clever ist und einen internen caching-Mechanismus, aber es wäre nett mich zu informieren, dass er so clever...
Kann mir das jemand erklären?
- möglich, Duplikat der EF-4.0-Modells, das Zwischenspeichern der Daten, und erkennt nicht die geänderten Daten.
- Ihre Frage gliedert sich in zwei bereits gestellte Fragen. Caching-problem: stackoverflow.com/questions/3617987/... Gemeinsamer Kontext-problem: stackoverflow.com/questions/3653009/...
- Ist die Instanz von Ihrem
DbContext
statisch, oder wird es erstellt auf jeder Seite verlangen? - Wenn Sie sagen, dass - "ich ändere eine Spalte in [Beiträge] Tabelle manuell", dann ändern Sie die Spalte Wert für den Datensatz in der dbContext im Speicher vorhanden von Sie Anwendung, oder Sie verändert den Wert in Ihre back-end-Datenbank direkt? Im Falle Sie haben die änderungen in Ihren in-memory-dbContext-Objekt, dann hast du einen commit der änderungen an der Datenbank vor der Aktualisierung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie sind Sie "erfrischend"? Wenn Sie wissen, dass ein Wert geändert hat, können Sie Aktualisieren Sie die Kontext-Cache den Wert verwenden ServerWins oder ClientWins :
http://msdn.microsoft.com/en-us/library/vstudio/bb738618(v=vs. 100).aspx
Aber die wirkliche Frage kommt auf, Wann und warum dies geschehen würde in den ersten Platz, das ist in Bezug auf die Lebensdauer der Kontext. Vielleicht könnten Sie werden mit den gleichen Zusammenhang? Denken Sie daran, dass SQL Server und usw. haben Ihre eigenen caching-Mechanismus, und damit Entity Framework ist nicht der einzige Fisch im Teich der Elemente, die Sie versuchen zu tun, einige Zwischenspeichern.
Aus, den folgenden link sammeln wir einige Tipps, die, wenn Sie verfolgt haben, Sie wahrscheinlich würde nicht dieses problem. http://msdn.microsoft.com/en-us/data/jj729737.aspx