Автообновление Bags в NHibernate - PullRequest
       10

Автообновление Bags в NHibernate

2 голосов
/ 23 сентября 2008

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

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

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

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

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

1 Ответ

4 голосов
/ 23 сентября 2008

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

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

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

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

Больше информации здесь: NHibernate Cascades: различие между всеми, all-delete-orphans и save-update

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