2010-12-15 16 views
0

Ich entwickle einen Windows Forms Smart-Client, der Fluent Nhibernate 1.1 und NHibernate 3.0 für Persistenz verwendet. Aufgrund des Legacy-Codes hatte ich keine andere Möglichkeit, als eine einzige Sitzung zu erstellen, die alle CRUD-Operationen auf Client-Ebene abwickelt. Dies neigt dazu, die Nhibernate-Sitzung in einem veralteten Zustand zu belassen. Daher habe ich entschieden, QueryOver zu verwenden, um dieses veraltete Datenproblem zu beseitigen, da ich der Ansicht war, dass die Abfrageergebnisse nicht zwischengespeichert wurden. Dies scheint nicht der Fall zu sein, da die von NHibernate zurückgegebenen Ergebnisse scheinbar zwischengespeichert werden.NHibernate QueryOver Caching Problem

Meine Frage ist, verwendet die Standardimplementierung von QueryOver eine Art von Caching, wenn die Ergebnisse zurückgegeben werden?

Antwort

2

NHibernate verwendet eine Identity Map, die garantiert, dass Sie unabhängig davon, wie Sie eine Entity aus der DB erhalten, immer dasselbe Objekt für dieselbe Zeile (innerhalb einer Sitzung) erhalten.

Eine einzelne Sitzung für eine Winforms-App ist ein Fehler; Das Problem, das Sie sehen, ist nur die Spitze des Eisbergs.

Für bessere Session-Handhabung in Winforms-Apps, überprüfen Sie Effectus.

Verwandte Themen