Like Oskar said, NHibernate does not repopulate entities from the database unless a Refresh is called. The problem can be described as:
1 - In a session, you load some entity(ies) from the database, using Get, QueryOver, Query, or whatever;
2 - Some of the records that are mapped to the entity(ies) change in the database;
3 - In the same session, if you load the entity(ies) again, using whatever API you want, the changed columns are not mapped to the already loaded entity(ies).
You have at least 3 choices:
1 - Evict the entities from the session, by calling ISession.Evict() or ISession.Clear();
2 - Use a stateless session, which doesn't have a first level cache, so does not keep track of loaded entities;
3 - Manually call ISession.Refresh() on each loaded entity to get updated values from the database.
RP