Это выходит за рамки NHibernate.
Вы можете сделать это на уровне более высокого уровня (абстракция поверх Session, которая ловит ошибки и сохраняет в другом месте) или на уровне более низкого уровня (реализацияIDriver, который скрывает детали подключения).
Оба сложны.Лучше выбрать базу данных с поддержкой репликации (SqlServer является одним из примеров), всегда работать с локальной базой данных, и позволить механизму репликации иметь дело с синхронизацией.
Конечно, это имеет дополнительную проблему управления конфликтами(в любом случае это происходит во всех шаблонах)