NHibernate ISession Flush: ¿Dónde y cuándo usarlo y por qué?

Una de las cosas que me confunden completamente es el uso desession.Flush, en conjunción consession.Commitysession.Close.

A vecessession.Close funciona, por ejemplo, confirma todos los cambios que necesito. Sé que necesito usar commit cuando tengo una transacción, o una unidad de trabajo con varias creaciones / actualizaciones / eliminaciones, para poder elegir deshacer si ocurre un error.

Pero a veces la lógica detrás de mí me obstaculizasession.Flush. He visto ejemplos donde tienes unsession.SaveOrUpdate() seguido de una descarga, pero cuando elimino Flush funciona bien de todos modos. A veces me encuentro con errores en la declaración de Flush que dice que la sesión se agotó, y al eliminarla me aseguré de no encontrarme con ese error.

¿Alguien tiene una buena directriz sobre dónde o cuándo usar una descarga? He revisado la documentación de NHibernate para esto, pero todavía no puedo encontrar una respuesta directa.

Respuestas a la pregunta(4)

Su respuesta a la pregunta