Сохраняющиеся дочерние удаления через NHibernate и WCF - PullRequest
0 голосов
/ 16 декабря 2009

Мы хотим использовать NHibernate за нашей службой WCF, но у нас возникают проблемы с сохранением удалений дочерних записей в базе данных.

Мы используем DTO между службой и клиентом, для которых IList <> является типом дочерней коллекции. Когда мы заполняем DTO с помощью NHibernate, он устанавливает дочернюю коллекцию в тип Bag. Однако, когда это будет отправлено по проводной сети, WCF изменит этот тип коллекции на Array.

Если мы удалим запись из массива и передадим ее обратно службе, NHibernate не сохранит удаление в базе данных.

Можно ли как-то сказать NHibernate (в отображении?) Удалить любые дочерние записи, которые не существуют в массиве?

Ответы [ 2 ]

5 голосов
/ 16 декабря 2009

В объекте сеанса есть функция SaveOrUpdateCopy, которая особенно полезна в этом сценарии.

SaveOrUpdateCopy (или Merge, который делает то же самое) загрузит текущую сущность из базы данных и попытается определить, какие изменения были внесены (т.е. какие дочерние сущности в коллекциях были удалены и т. Д.)

Вот ссылка на пост в блоге, в котором более подробно рассматривается копия SaveOrUpdate: http://www.codinginstinct.com/2009/11/nhibernate-feature-saveorupdatecopy.html

0 голосов
/ 16 декабря 2009

Вы смотрели на настройку каскада в отношении (то есть в списке)? Для более подробной информации о различных опциях, проверьте это post .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...