¿Cómo mantener constantes los datos de la sesión NHibernate?

Tengo sesiones de NHibernate almacenadas en caché en la sesión ASP.NET.

Me encontré con una situación en la que un usuario editó un objeto, por lo que está en su caché de primer nivel en ISession. Otro usuario editó el mismo objeto.

En este punto, el Usuario1 aún ve su versión original de sus ediciones, mientras que el Usuario2 ve el estado correcto del objeto.

¿Cuál es la forma correcta de manejar esto sin llamar manualmente a session.Refresh (myObj) explícitamente para cada objeto todo el tiempo?

También tengo habilitado un caché de segundo nivel. Para NHibernate Long Session, ¿debería deshabilitar por completo el caché de primer nivel?

Editar: Agregando un poco más de terminología a lo que estoy buscando lograr de10.4.1. Sesión larga con versionado automático El final de esta sección concluye con

Como ISession es también el caché de primer nivel (obligatorio) y contiene todos los objetos cargados, podemos usar esta estrategia de manera propagable solo para unos pocos ciclos de solicitud / respuesta. De hecho, esto se recomienda, ya que ISession pronto también tendrá datos obsoletos.

No estoy seguro de qué tipo de documentación es para incluir ambos probablemente y luego decir de inmediato que la sesión tendrá datos obsoletos (que es lo que estoy viendo). ¿Cuál es la solución a esto aquí o no hay ninguno?

Respuestas a la pregunta(3)

Su respuesta a la pregunta