Probablement une question stupide, mais j'essaie toujours d'envelopper nHibernate. Pour autant que je sache à partir de l'utilisation du logiciel, nHibernate vous demande de faire un peu de manipulation supplémentaire pour enregistrer les modifications correctement. Imaginons que j'ai un objet X qui peut contenir beaucoup d'objet Y. Je vais créer un X qui a 2 Y, chacun ayant ses propres propriétés. Je décide alors que je veux mettre à jour X. Je vais ajouter un nouveau Y, et changer l'un des Y existants.Comment déterminer si l'objet nHibernate a changé
Donc je charge dans mon objet X en utilisant son identifiant. Je passe ensuite en revue les Y que j'ajoute, je les ajoute au X et je sauvegarde le lot en utilisant une instruction de mise à jour.
Si vous faites cela, vous trouverez les «anciens» Y devenus orphelins dans la base de données. Lequel, quand j'y pense, est exactement ce à quoi je m'attendrais - je ne me suis pas débarrassé de ces objets après tout, je viens d'en créer de nouveaux.
Il y a donc deux façons de voir cela. Soit je devrais supprimer toutes les données Y et ensuite les recréer, soit je devrais pouvoir signaler à nHibernate que ce que je fais est un changement et qu'il devrait être mis à jour des objets existants plutôt que d'en créer de nouveaux . Le problème est, je ne suis pas sûr de savoir quelle est la «bonne» approche ou la meilleure façon de le faire - le premier semble terriblement inefficace et le dernier signifie mettre beaucoup de drapeaux «changés» et de code très fiddly.
Donc je suis sûr qu'il doit y avoir une solution plus facile qui me manque dans ma stupidité. Quelqu'un peut-il me montrer à la meilleure approche et la meilleure façon de le gérer dans NHibernate ... qui est si la question n'a aucun sens du tout :)
Cheers, Matt