Подтвердить что ты не робот

SaveOrUpdate Vs Обновление и сохранение в NHibernate

В чем разница между SaveOrUpdate и Save/Update в NHibernate. Почему бы вам просто не использовать SaveOrUpdate? Кроме того, в чем смысл SaveOrUpdateCopy?

4b9b3361

Ответ 1

Глава 9 охватывает все это лучше, чем я могу:

http://nhibernate.info/doc/nh/en/index.html

Но заметки об утесе:

Save() принимает новый объект без идентификатора и присоединяет его к сеансу. Объект будет INSERT 'd.

Update() берет существующий объект с идентификатором, но не находится в сеансе и присоединяет его к сеансу. Объект будет UPDATE 'd.

SaveOrUpdate() смотрит на идентификатор и решает, что необходимо в приведенном выше.

SaveOrUpdateCopy() отличается тем, что у вас есть два объекта с одинаковым идентификатором - один в сеансе, а один нет. Если вы попытаетесь и UPDATE тот, который не находится в сеансе, исключение генерируется нормально (теперь вы пытаетесь присоединить два объекта, которые представляют собой один и тот же постоянный объект для сеанса). SaveOrUpdateCopy() копирует состояние несезонного объекта в состояние объекта сеанса.

Я не уверен, как вы собираетесь использовать NH, но для многих случаев вам нужно всего Save(). Сеанс выполняет всю работу, необходимую для того, чтобы знать, что нужно обновить, и просто Flush() или Commit() делает все, что вам нужно.