Автообновление пакетов в NHibernate

Я использую ASP.Net с NHibernate для доступа к базе данных Pgsql.

Для некоторых наших объектов мы используем пакеты NHibernate, которые сопоставляются с объектами List в нашем приложении. Иногда у нас возникают проблемы с необходимостью обновления объектов через NHibernate, когда мы обновляем что-либо, связанное со списками в базе данных.

<bag name="Objects" inverse="true" lazy="true" generic="true" >
   <key column="object_id" />
   <one-to-many class="Object" />
</bag>

Выше приведен пример кода, который я использую для наших сумок.

Мне было интересно, сталкивался ли кто-нибудь еще с этой проблемой где-нибудь, и что вы делаете, чтобы обойти ее?


person Jimmeh    schedule 23.09.2008    source источник
comment
Не могли бы вы сказать, какие проблемы? Это связано с сессией?   -  person chrissie1    schedule 23.09.2008
comment
Проблемы в основном заключаются в том, что в приложении, если вы сохраняете больше элементов в базе данных, если объект, у которого есть сумка с этими элементами, хочет иметь к ним доступ, объекты должны быть обновлены.   -  person Jimmeh    schedule 23.09.2008


Ответы (1)


Вы пробовали каскады NHibernate, такие как сохранение-обновление?

Вы можете указать NHibernate автоматически проходить ассоциации объекта и действовать в соответствии с параметром каскада. Например, добавление несохраненного объекта в коллекцию с каскадом сохранения-обновления приведет к тому, что он будет сохранен вместе с его родительским объектом без каких-либо явных инструкций с нашей стороны.

Вот что означает каждая опция каскада:

  • none - не делать никаких каскадов, пусть их обрабатывают пользователи.
  • save-update — при сохранении/обновлении объекта проверьте ассоциации и сохраните/обновите любой объект, который требует этого (включая сохранение/обновление ассоциаций в сценарии «многие ко многим»).
  • удалить — при удалении объекта удалить все объекты в ассоциации.
  • delete-orphans — при удалении объекта удаляются все объекты в ассоциации. В дополнение к этому, когда объект удален из ассоциации и не связан с другим объектом (осиротевшим), также удалите его.
  • все - при сохранении/обновлении/удалении объекта проверить ассоциации и сохранить/обновить/удалить все найденные объекты.
  • все-удалить-сироты — при сохранении/обновлении/удалении объекта проверить ассоциации и сохранить/обновить/удалить все найденные объекты. В дополнение к этому, когда объект удален из ассоциации и не связан с другим объектом (осиротевшим), также удалите его.

Подробнее здесь: Каскады NHibernate: разница между всеми, всеми удаленными сироты и сохранить-обновить

person Sam Wessel    schedule 23.09.2008