Nhibernate клонировать объект и вставлять как новую запись - PullRequest
4 голосов
/ 01 ноября 2011

Есть ли способ с помощью NHibernate клонировать существующий объект (полученный через nhibernate) и выполнить вставку в него для создания новой записи вместо обновления текущей.

Мы используем это длясделать какое-то временное управление версиями и нужно такое поведение.

Ответы [ 2 ]

2 голосов
/ 01 ноября 2011

Я не знаю ничего встроенного в nhibernate, что бы делать то, что вы после.

Предупреждение о взломе впереди
Я не пробовал этого, так что я просто размышляю о том, как nhibernate отслеживает объекты.

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

Если бы это был я, я бы, вероятно, применил метод клонирования к объекту, который возвращает новый объект с копией свойств и т. Д.

Некоторые другие ответы на SO предлагают использовать Automapper Как клонировать объекты в NHibernate?

1 голос
/ 02 ноября 2011

Просто сделайте MemberwiseClone и очистите Id.

...