Was ist der Unterschied zwischen SaveOrUpdate und Speichern/Aktualisieren in NHibernate. Warum würden Sie nicht immer SaveOrUpdate verwenden? Was ist der Sinn von SaveOrUpdateCopy?SaveOrUpdate Vs Update und Speichern in NHibernate
Antwort
Kapitel 9 deckt all dies besser als ich es kann:
http://nhibernate.info/doc/nh/en/index.html
Aber Klippe Hinweise:
Save()
nimmt ein neues Objekt ohne eine Kennung und legt es auf der Sitzung. Das Objekt wird INSERT
'd.
Update()
nimmt ein vorhandenes Objekt, das einen Bezeichner hat, aber nicht in der Sitzung ist, und hängt es an die Sitzung an. Das Objekt wird UPDATE
'd.
SaveOrUpdate()
schaut sich den Bezeichner an und entscheidet, was im obigen notwendig ist.
SaveOrUpdateCopy()
ist etwas Besonderes in dem sagen, Sie haben zwei Objekte mit der gleichen Kennung - eine in der Sitzung und eine nicht. Wenn Sie versuchen, und update
derjenige, der nicht in der Sitzung ist, wird eine Ausnahme normal ausgelöst (Sie versuchen nun, zwei Objekte anzuhängen, die dasselbe persistente Objekt für die Sitzung darstellen). SaveOrUpdateCopy()
kopiert den Nicht-Sitzungsobjektstatus in den Sitzungsobjektstatus.
Ich bin mir nicht sicher, wie Sie NH verwenden werden, aber für viele Fälle brauchen Sie nur Save()
. Die Sitzung macht die ganze Arbeit notwendig, um zu wissen, was aktualisiert werden muss und einfach Flush()
oder Commit()
tut alles, was Sie brauchen.
- 1. NHibernate: Fluent Nhibernate verwenden, um untergeordnete Objekte zu speichern
- 2. Hibernate saveorUpdate Methode Problem
- 3. NHibernate speichern/update-Ereignis-Listener: Hören für Kind Objekt speichert
- 4. NHibernate Parent-Childs speichern redundante SQL-Update ausgeführt
- 5. NHibernate Cascade = save-update "
- 6. Fluent NHibernate - Unnötige Update
- 7. Bedingte saveOrUpdate im Ruhezustand
- 8. Erstellen eine Update-Methode in meinem nHibernate Repository
- 9. NHibernate dynamic-update Nachteile?
- 10. Save vs Update in Laravel
- 11. nhibernate nicht Speichern Fremdschlüssel Id
- 12. NHibernate - ISession vs IStatelessSession
- 13. NHibernate Fluent vs. Attribute
- 14. NHibernate, Transaktionen und TransactionScope
- 15. Hibernate saveOrUpdate() versucht zu speichern, wenn es aktualisiert werden sollte
- 16. Hibernate saveOrUpdate aktualisiert nicht
- 17. NHibernate - CreateCriteria vs Create
- 18. NHibernate ISet Vs IList
- 19. Nhibernate session.BeginTransaction() vs. transaction.begin()
- 20. NHibernate zusätzliche UPDATE Abfrage ausführen
- 21. Nhibernate Multilevel-Hierarchie Fehler speichern?
- 22. Fluent NHibernate Ausgabeschema Update-Datei
- 23. Was ist der Unterschied zwischen Update und Einfügen in NHibernate?
- 24. Sammlung kann nicht null sein bei SaveOrUpdate()
- 25. NHibernate Speichern, Löschen, Speichern liefert einzigartige Schlüsselverletzung
- 26. NHibernate Session.Flush & Evict vs Löschen
- 27. EF4 ObjectContext vs NHibernate Sitzung
- 28. nhibernate 'speichern' -> 'get' Problem
- 29. ADO.NET Entity Framework vs NHibernate
- 30. Wie können Sie Hibernate saveOrUpdate in JPA replizieren?
Normalerweise benötigen Sie SaveOrUpdate() nicht, da NHibernate Änderungen an jedem geladenen Objekt verfolgt. Um ein Objekt zu aktualisieren, benutze Session.Get(), ändere dann und rufe dann Session.Flush() auf. –
Was ist besser lesbar oder Absicht in den Code dann offen: 'SaveOrUpdate()' oder 'Flush()'/'Commit()'? Oder macht es keinen Unterschied (semantisch oder anders)? –
Das explizite Löschen der Sitzung ist wahrscheinlich nicht erforderlich. Wenn Sie eine Transaktion festschreiben oder die Sitzung den Gültigkeitsbereich verlässt, werden die Änderungen automatisch beibehalten (oder früher, wenn sie aus irgendeinem Grund erforderlich sind, ID-Generierung oder Ähnliches). Flush ist die Absicht, die (für mich) aufdeckt, wenn Sie * die Änderungen automatisch erzwingen müssen, wegen der Lese-Ioslation oder einer anderen Esoterik und ansonsten nur durch Rauschen. Jeder, der sich mit NH auskennt, wird das implizite "Update" auch für angehängte Entitäten verstehen, also tendiere ich dazu, das gleiche von expliziten 'SaveOrUpdate'-Anweisungen zu denken. –