Bonjour, Je rencontre un problème lors de la mise à jour des objets enfants dans le scénario suivant.Problème de cascade NHibenate
Les correspondances sont les suivantes:
Parent: Calendrier
<bag name="defaultCategories" inverse="true" lazy="false"
cascade="all-delete-orphan">
<key column="parentID" />
<one-to-many class="DefaultCategory"/>
</bag>
enfant: 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" />
code utilisé pour mettre à jour le calendrier:
public Calendar Update(Calendar vo)
{
session = NHibernateHelper.GetCurrentSession();
tx = session.BeginTransaction();
using (tx)
{
session.Update(vo);
tx.Commit();
}
return vo;
}
Le prob Lem est que lorsque j'ajoute ou supprime des defaultCategories via l'interface utilisateur et que je renvoie la version mise à jour du calendrier au backend, NHibernate renvoie le calendrier mis à jour et tout semble bien. Cependant, tous les DefaultCatergories qui auraient dû être supprimés sont conservés dans la table Catégories par défaut. Ainsi, lorsque je rafraîchis l'interface utilisateur et que je réappelais pour le calendrier, je peux voir que la collecte n'a pas changé.
Pensez-vous que je doive supprimer tous les DefaultCatergories par parentID, puis recréer? J'avais l'impression que NHibernate s'en occupait pour vous? Toute aide ou pointeurs très appréciés.
Merci pour cela. Je viens de le regarder et j'ai suivi les conseils d'utilisation de saveUpdate. Cependant, toujours le même problème. Cela étant, disons que j'ai 3 objets enfants, supprimer 2 et mettre à jour. Je vais toujours finir avec 3 dans la DB. Hmmm de retour à la planche à dessin. – user17510