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