Сессия NHibernate не только реализует шаблон «Единица работы», но также реализует шаблон «Карта идентичности».
То есть, когда вы впервые извлекаете сущность из хранилища данных в сеансе, NHibernate извлечет эту сущность из БД.
Если вы хотите снова получить ту же сущность , используя ту же сессию , тогда NHibernate не будет извлекать ее из БД, но вернет ссылку, которую она уже извлекла. Конечно, это верно только в том случае, если вы используете один и тот же экземпляр Session при извлечении этой же сущности во второй раз.
Когда вы вносите изменения в сущность, и в то же время кто-то другой меняет эту же сущность и сохраняет эти изменения в БД, тогда, конечно, эти изменения не будут видны, поскольку вы не можете ожидать, что NHIbernate отслеживает всей базы данных, и проверяет, изменил ли кто-либо еще (и сохранил) объект, который у вас есть в памяти.
Поэтому рекомендуется, чтобы ваши сеансы были недолговечными. Чтобы не переписывать чужие изменения, вы можете легко реализовать оптимистическую блокировку в NHibernate.
Но, мне интересно ... Вы уверены, что NHibernate является хорошим решением вашей проблемы? Какое приложение вы собираетесь создавать?