mon problème lokks semblable à celui-ci: (link)mapping NHibernate: supprimer la collection, insérer une nouvelle collection avec les anciens ID
mais j'ai un à plusieurs:
<set name="Fields" cascade="all-delete-orphan" lazy="false" inverse="true">
<key column="[TEMPLATE_ID]"></key>
<one-to-many class="MyNamespace.Field, MyLibrary"/>
</set>
(i aussi essayé de utiliser) ce mappage est pour modèle objet. celui-ci et l'objet Champ ont leurs générateurs d'ID réglés sur identité. Quand j'appelle session.Update pour l'objet Template, ça fonctionne très bien, presque: si l'objet Field a un numéro d'identification, la requête UPDATE sql est appelée, si l'ID est 0, l'INSERT est exécuté. Mais si je supprime un objet Field de la collection, il n'a aucun effet sur la base de données. J'ai trouvé que si j'appelle aussi session.Delete pour cet objet Field, tout ira bien, mais en raison de l'architecture client-serveur je ne sais pas quoi effacer. J'ai donc décidé de supprimer tous les éléments de la collection et d'appeler session.Update avec une nouvelle collection. et j'ai un problème: nhibernate exécute l'opération UPDATE pour les objets Field qui ont un Id différent de zéro, mais ils sont supprimés de DB! Peut-être que je devrais utiliser un autre générateur Id ou smth .. Quelle est la meilleure façon de faire nhibernate effectuer "effacer tout"/"insert all" routine pour la collecte?
session.Merge est exactement ce que le médecin a dit! merci beaucoup! J'étais assez fou à cause de ça .. ouf .. – npeBeg