One of the things that get me thoroughly confused is the use of session.Flush,in conjunction with session.Commit, and session.Close.

Sometimes session.Close works, e.g., it commits all the changes that I need. I know I need to use commit when I have a transaction, or a unit of work with several creates/updates/deletes, so that I can choose to rollback if an error occurs.

But sometimes I really get stymied by the logic behind session.Flush. I have seen examples where you have a session.SaveOrUpdate() followed by a flush, but when I remove Flush it works fine anyway. Sometimes I run into errors on the Flush statement saying that the session timed out, and removing it made sure that I didn’t run into that error.

Does anyone have a good guideline as to where or when to use a Flush? I’ve checked out the NHibernate documentation for this, but I still can’t find a straightforward answer.

4 Answers
4

Leave a Reply

Your email address will not be published. Required fields are marked *