В NHibernate 3.1 ISession.SaveOrUpdateCopy ()
помечен как устаревший. В документации предлагается вместо этого использовать Merge ()
. Документация по каждому из них выглядит следующим образом:
SaveOrUpdateCopy (object obj)
Скопировать состояние данного объекта на постоянный объект с тем же идентификатором. Если в настоящее время нет постоянного экземпляра, связанного с сеанс, он будет загружен. Верните постоянный экземпляр. Если данный экземпляр не сохранен или не существует в базе данных, сохраните его и вернуть его как новый постоянный экземпляр. В противном случае данный экземпляр не связывается с сеансом.
Merge (object obj)
Скопируйте состояние данного объекта на постоянный объект с тем же идентификатор. Если в настоящее время нет постоянного экземпляра, связанного с сеанс, он будет загружен. Верните постоянный экземпляр. Если данный экземпляр не сохранен, сохраните копию и верните ее как новый постоянный пример. Данный экземпляр не становится связанным с сеансом. Эта операция выполняется каскадом на связанные экземпляры, если ассоциация сопоставлена с
cascade = "merge"
.
Семантика этого метода определена в JSR-220.
Они выглядят почти идентичными мне, но обязательно должны иметь некоторые тонкости. Если да, то какие?