В чем разница между 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()
делает все, что вам нужно.