Quelle est la différence entre SaveOrUpdate et Save/Update dans NHibernate. Pourquoi n'utiliserais-tu pas toujours SaveOrUpdate? Aussi, quel est le point de SaveOrUpdateCopy?SaveOrUpdate Vs Mettre à jour et enregistrer dans NHibernate
Répondre
Chapitre 9 couvre tout cela mieux que moi:
http://nhibernate.info/doc/nh/en/index.html
Mais notes falaise:
Save()
prend un nouvel objet sans identifiant et qu'il attache à la session. L'objet sera INSERT
'd.
Update()
prend un objet existant qui a un identificateur mais n'est pas dans la session et l'attache à la session. L'objet sera UPDATE
'd.
SaveOrUpdate()
examine l'identificateur et décide de ce qui est nécessaire dans ce qui précède.
SaveOrUpdateCopy()
est spécial en ce sens que vous avez deux objets avec le même identifiant - un dans la session et un non. Si vous essayez et update
celui qui n'est pas dans la session une exception est levée normalement (vous essayez maintenant d'attacher deux objets qui représentent le même objet persistant à la session). SaveOrUpdateCopy()
copie l'état de l'objet hors session dans l'état de l'objet de session. Je ne sais pas comment vous allez utiliser NH, mais pour beaucoup de cas tout ce dont vous avez besoin est Save()
. La session fait tout le travail nécessaire pour savoir ce qui doit être mis à jour et simplement Flush()
ou Commit()
fait tout ce dont vous avez besoin.
- 1. Subsonic 3 Enregistrer() puis Mettre à jour()?
- 2. enregistrer ou mettre à jour le problème
- 3. Parent enfant (Enregistrer, mettre à jour et supprimer)
- 4. NHibernate: Insérer et mettre à jour les dates
- 5. NHibernate commit changements db sans appel explicite pour enregistrer ou mettre à jour
- 6. Hibernate saveOrUpdate() nullPointerException lancé à chaque seconde mise à jour
- 7. Enregistrer modelForm pour mettre à jour l'enregistrement existant
- 8. Fluent NHibernate HasMany ne pas mettre à jour le FK
- 9. Nhibernate - Mettre à jour mon client comme ça?
- 10. Comment faire pour enregistrer en cascade avec CompositeId dans NHibernate?
- 11. Mettre à jour le contrôle DataGrid WinForm dans .Net 2003
- 12. Attribut de mise à jour de NHibernate et hbm2dll
- 13. À jour vs à la demande
- 14. Enregistrer l'assembly dans ASP.NET (VS 2005) et web.config
- 15. Expression régulière pour détecter et mettre à jour Chaîne (Utile pour mettre à jour la version du fichier dans AssemblyInfo.cs)
- 16. Comment mettre à jour mysql?
- 17. Cocoa-Bindings: Mettre à jour NSObjectController manuellement?
- 18. Mettre à jour plusieurs lignes
- 19. Comment mettre à jour datagridview
- 20. NHibernate: besoin de mettre à jour l'ID d'objet avec @@ identity après l'insertion
- 21. Enregistrer des objets dans NHibernate IInterceptor
- 22. Existe-t-il un moyen de mettre à jour la validation CSS VS à 3.0?
- 23. Comment mettre à jour un nœud XML?
- 24. Mettre à jour le panneau de mise à jour
- 25. Comment mettre à jour la référence Web à partir de la ligne de commande VS 2008?
- 26. Forcez NHibernate à publier une mise à jour
- 27. NHibernate - createCriteria vs createAlias
- 28. Simple AJAX Soumettre et mettre à jour mysql
- 29. Insérer et mettre à jour en même temps
- 30. Ajouter et mettre à jour avec LINQ aux entités
Vous n'avez généralement pas besoin de SaveOrUpdate() car NHibernate suit les modifications apportées à chaque objet chargé. Pour mettre à jour un objet, utilisez Session.Get(), faites-vous changer puis appelez Session.Flush(). –
Qu'est-ce qui est plus lisible ou intention révélatrice dans le code alors: 'SaveOrUpdate()' ou 'Flush()'/'Commit()'? Ou cela ne fait-il pas une différence (sémantique ou autre)? –
Le vidage explicite de votre session n'est probablement pas nécessaire. Si vous validez une transaction ou si la session est hors de portée/est éliminée, les modifications seront automatiquement conservées (ou plus tôt si elles doivent l'être pour une raison quelconque, la génération d'identifiants ou autre). Le flush est révélateur (pour moi) quand vous avez besoin de forcer les changements automatiquement, à cause de la lecture ou de quelque autre ésotérisme, et seulement du bruit. Quiconque est familier avec NH comprendra également la mise à jour implicite pour les entités attachées, donc j'ai tendance à penser la même chose des instructions explicites 'SaveOrUpdate'. –