NHibernate Cascade = сохранить обновление "?

Отказ от ответственности: я новичок в NHibernate, поэтому, надеюсь, этот вопрос имеет смысл. У меня есть отношения "многие ко многим" между двумя классами, что-то вроде…

public class Entity1
{
    public virtual Guid EntityId { get; set; }
    public virtual IList<Entity2> Entity2List;
} 

Public class Entity2
{
    public virtual Guid EntityId { get; set; }
    public virtual IList<Entity1> Entity1List;
}

Я добавил отношение «многие ко многим» с мешком в оба сопоставления классов, определив таблицу ассоциаций, но я не уверен, какой вариант каскада использовать. Я хочу иметь возможность создать новый экземпляр Entity1, добавить новый экземпляр Entity2 в его список, вызвать Save, и оба они будут вставлены в базу данных (и наоборот). При удалении сущности следует удалять любые ассоциации с дочерними сущностями, но не саму дочернюю сущность. Должен ли я использовать cascade = "save-update"?


person John    schedule 20.07.2009    source источник


Ответы (1)


да. Похоже, что в данном случае вам нужно «сохранить-обновить».

Я так и не нашел в документации подробного объяснения каждого варианта каскада, но использовал этот сообщение в блоге Айенде в качестве справки.

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