Нибенатная каскадная проблема - PullRequest
1 голос
/ 25 февраля 2009

Привет, у меня проблема с обновлением дочерних объектов в следующем сценарии.

Отображения следующие:

Родитель: Календарь

  <bag name="defaultCategories"  inverse="true" lazy="false" 
    cascade="all-delete-orphan">
  <key column="parentID" />
  <one-to-many class="DefaultCategory"/>
  </bag>

Ребенок: DefaultCatergory

<class name="DefaultCategory" table="tb_calendar_default_category" lazy="false">

<id name="id" column="id">
  <generator class="hilo"/>
</id>

<many-to-one name="calendar" column="parentID" not-null="true" 
 cascade="all-delete-orphan" />

Код, используемый для обновления календаря:

public Calendar Update(Calendar vo)
    {
        session = NHibernateHelper.GetCurrentSession();

        tx = session.BeginTransaction();
        using (tx)
        {

            session.Update(vo);

            tx.Commit();
        }

        return vo;
    }

Проблема в том, что когда я добавляю или удаляю defaultCategories через пользовательский интерфейс и отправляю обратно обновленную версию календаря на сервер, NHibernate возвращает обновленный календарь, и все выглядит хорошо. Однако любые defaultCatergories, которые должны были быть удалены, остаются в таблице категорий по умолчанию. Таким образом, когда я обновляю пользовательский интерфейс и снова вызываю календарь, я вижу, что коллекция не изменилась.

Как вы думаете, мне нужно удалить все defaultCatergories по parentID, а затем создать заново? У меня сложилось впечатление, что NHibernate позаботился об этом для тебя? Любая помощь или указатели очень ценятся.

Ответы [ 2 ]

1 голос
/ 25 февраля 2009

Является ли ваш по умолчанию режим сброса OnCommit? Если это не так, то, возможно, сбрасывает сессию, прежде чем коммит решит проблему.

То, что вы делаете, должно работать.

1 голос
/ 25 февраля 2009

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

...