Привет, У меня возникла проблема с обновлением дочерних объектов в следующем сценарии.Проблема с каскадом NHibenate
отображений следующим образом:
Родитель: Календарь
<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;
}
к веро lem заключается в том, что когда я добавляю или удаляю defaultCategories через ui и отправляю обновленную версию календаря на задний план, NHibernate возвращает обновленный календарь, и все кажется хорошо. Однако любые defaultCatergories, которые должны были быть удалены, остаются в таблице категорий по умолчанию. Таким образом, когда я обновляю ui и снова вызываю календарь, я вижу, что коллекция не изменилась.
Как вы думаете, мне нужно удалить все defaultCatergories по parentID и затем воссоздать? У меня было впечатление, что NHibernate позаботился об этом для вас? Любая помощь или указатели очень ценится.
Благодарим за это. Я просто посмотрел на него и последовал совету использования saveUpdate. Однако, все та же проблема. Это, скажем, у меня есть 3 дочерних объекта, удалить 2 и обновить. Я по-прежнему получаю 3 в дБ. Вернитесь к чертежной доске. – user17510