Используя NHibernate на уровне сервиса, логично, что вам нужно будет:
a) загрузить объект во время операции обновления в службе, изменить необходимые свойства и затем зафиксировать транзакцию, или
b) если у вас уже есть объект, доступный в службе (но не связанный с сеансом NHibernate), вы можете изменить необходимые свойства, вызвать session.Update (obj), чтобы повторно связать объект с сеансом, а затем зафиксировать сделка.
Мы регулярно используем первый подход, когда в нашей модели есть сотни различных объектов. Мы передаем специализированные объекты командных запросов от клиента к серверу, а затем наш сервисный уровень отвечает за выполнение работы, указанной в командных запросах.
В качестве альтернативы вы можете сформулировать запрос HQL, как указано здесь . Но это быстро станет довольно уродливым и сложным в обслуживании.