Мы пытаемся использовать NHibernate 1.1 в качестве постоянного слоя за API веб-службы. Ничего нового там нет. Мы используем Automapper для перевода доменных объектов, которые мы получаем из (Fluent-) NHibernate, в DTO, которые мы отправляем по проводам.
Проблема, которую мы видим, заключается в следующем сценарии:
- Читаем объект из репозитория
- Мы переводим этот объект (через Automapper) в форму DTO.
- После некоторого, возможно, тривиального перепутывания, объект отображается обратно из DTO в объект Fluent-Nhibernate (включая первичный ключ, который не может измениться).
- Мы сохраняем объект.
После шага 4 мы получаем Nonuniqueobjectexception от NHibernate, и он создает новую строку для сохранения объекта (с новым первичным ключом). Мы хотим обновить исходную строку, но вместо этого новые строки изменяются (!)
Итак, в этой ситуации, как мы можем убедить NHibernate выполнить обновление вместо операции вставки?
Кстати, если мы пропустим перевод в DTO и обратно, с обновлением проблем не будет.
== Тевя ==