Мысль:
1) Вы не хотите создавать NHibernate SessionFactory при каждом запросе. Это должно быть создано один раз и затем использовано всеми будущими запросами. Это тяжелая операция. Для каждого запроса необходимо создавать только сеансы.
2) Управляйте транзакцией высокоуровневым методом - чтобы снизить вероятность того, что что-то пойдет не так, ПОСЛЕ того, как вы совершили транзакцию, но ДО того, как клиент получит ответ.
3) Предотвращение повторной отправки метода «Обновить», если функция submit возвращает другую страницу с информацией. Эта страница не должна отправлять ничего.
4) Защита от повторной отправки на стороне сервера, проверяя отправку по ранее представленным учетным данным. Сообщите клиенту, если он ранее зарегистрировался, и предоставьте ему средства для доступа к сохраненным данным (например, восстановление пароля).
так, например, если ваши пользователи набирают ключи по адресу электронной почты, в событии загрузки страницы выполните следующие действия: