В чем разница между SaveOrUpdate и Save/Update в NHibernate. Почему бы вам просто не использовать SaveOrUpdate? Кроме того, в чем смысл SaveOrUpdateCopy?
SaveOrUpdate Vs Обновление и сохранение в NHibernate
Ответ 1
Глава 9 охватывает все это лучше, чем я могу:
http://nhibernate.info/doc/nh/en/index.html
Но заметки об утесе:
Save() принимает новый объект без идентификатора и присоединяет его к сеансу. Объект будет INSERT 'd.
Update() берет существующий объект с идентификатором, но не находится в сеансе и присоединяет его к сеансу. Объект будет UPDATE 'd.
SaveOrUpdate() смотрит на идентификатор и решает, что необходимо в приведенном выше.
SaveOrUpdateCopy() отличается тем, что у вас есть два объекта с одинаковым идентификатором - один в сеансе, а один нет. Если вы попытаетесь и UPDATE тот, который не находится в сеансе, исключение генерируется нормально (теперь вы пытаетесь присоединить два объекта, которые представляют собой один и тот же постоянный объект для сеанса). SaveOrUpdateCopy() копирует состояние несезонного объекта в состояние объекта сеанса.
Я не уверен, как вы собираетесь использовать NH, но для многих случаев вам нужно всего Save(). Сеанс выполняет всю работу, необходимую для того, чтобы знать, что нужно обновить, и просто Flush() или Commit() делает все, что вам нужно.