Wie können Sie die Daten einer NHibernate-Sitzung auf lange Sicht konsistent halten?

Ich habe NHibernate-Sitzungen in der ASP.NET-Sitzung zwischengespeichert.

Ich bin auf eine Situation gestoßen, in der ein Benutzer ein Objekt so bearbeitet hat, dass es sich in seinem Cache der ersten Ebene in der ISession befindet. Ein anderer Benutzer hat dann dasselbe Objekt bearbeitet.

An diesem Punkt sieht Benutzer1 immer noch die ursprüngliche Version seiner Bearbeitungen, während Benutzer2 den korrekten Status des Objekts sieht.

Was ist die richtige Vorgehensweise, wenn Sie session.Refresh (myObj) nicht immer explizit für jedes einzelne Objekt aufrufen?

Ich habe auch einen Cache der zweiten Ebene aktiviert. Soll ich für NHibernate Long Session nur den Cache der ersten Ebene vollständig deaktivieren?

Bearbeiten Hinzufügen von mehr Terminologie zu dem, was ich erreichen möchte von 10.4.1. Lange Sitzung mit automatischer Versionierung das Ende dieses Abschnitts endet mit

Da die ISession auch der (obligatorische) Cache der ersten Ebene ist und alle geladenen Objekte enthält, können wir diese Strategie wahrscheinlich nur für einige wenige Anforderungs- / Antwortzyklen verwenden. Dies wird in der Tat empfohlen, da die ISession bald auch veraltete Daten haben wird.

Ich bin mir nicht sicher, welche Art von Dokumentation dies für beide sein soll, wahrscheinlich und sage dann sofort, dass die Sitzung veraltete Daten haben wird (was ich sehe). Was ist die Lösung dafür hier oder gibt es keine?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage