Просто интересно, как лучше всего сохранить родителя, который обычно содержит коллекцию дочерних объектов (в моем случае многие-ко-многим), но эта коллекция в родительском объекте в настоящее время установлена в нуль, потому что она не была загружен
В моем случае Родитель передается на мой сервисный уровень с веб-страницы. Веб-страница содержит только простые атрибуты Родителя из формы.
Я знаю, что в базе данных есть несколько дочерних объектов, связанных с Родителем, но свойство 'children' в настоящее время равно нулю.
Если я сохраняю Parent, даже если для my of Children установлено значение cascade = "none", при сохранении Parent удаляются все ссылки (я даже вижу проблемы с операторами NHibernate в журналах).
Я могу придумать несколько способов решить эту проблему:
1) Загрузите дочерние элементы отдельно, а затем установите для них дочернюю коллекцию Родителя, а затем сохраните родительский (работает, но это дополнительная поездка в базу данных).
2) Выпустите обновление ТОЛЬКО простых свойств с использованием HQL или Native SQL.
Обновление: я не уверен, что мое каскадное поведение на самом деле работает правильно. Из документов видно, что NHibernate не будет связываться с моей коллекцией, если только в каскаде не задано сохранение-обновление, удаление-удаление-сирота и т. Д. Но это мое отображение
(из Order.hbm.xml)
<bag name="OrderItems" table="order_item" cascade="none" lazy="true">
<key column ="order_id" />
<many-to-many class="MenuItem" column="item_id"/>
</bag>
Когда Order.OrderItems имеет значение null, и я сохраняю свой объект Order с помощью SaveOrUpdate (Order), он определенно удаляет коллекцию. Я хочу, чтобы они были сохранены. У меня неправильная конфигурация или что-то в этом роде?
Спасибо