Frage

Wenn Session.SaveOrUpdate(myEntity); mit wie funktioniert NHibernate entscheiden, wie, ob ein neuer Datensatz einfügen oder eine vorhandene aktualisieren?

Ich habe Probleme während Speichern eines Objekts in einem S # arp-Projekt. Es wird aus dem Speicher abgerufen, dann in den Sitzungsstatus für ein paar Web-Anfragen gespeichert, dann mit einer Eigenschaft in der Datenbank gespeichert zurück (nicht die S # arp [DomainSignature]) geändert.

Ich habe zur Laufzeit verglichen, um das Objekt, das im Begriff ist, mit einer frisch abgerufene Version beibehalten wird direkt aus der Datenbank der Equals() Methode und dass die Rendite stimmt. Jedoch nach wie vor das Objekt endet eine neue Zeile in der Datenbank zu erstellen.

Anderswo in der Anwendung das funktioniert gut, aber ich bin der Hoffnung, für einen Zeiger auf, wie NHib diese aus funktioniert.

War es hilfreich?

Lösung

Im Grunde SaveOrUpdate() sucht eine Kennung. Wenn die Kennung vorhanden ist, wird es den Datensatz in der Datenbank aktualisieren. Wenn die Kennung nicht vorhanden ist, wird es einen neuen Datensatz erstellen.

Allerdings, es klingt wie Sie etwas flippige los in Ihrer Sitzung haben könnten. Vielleicht möchten Sie SaveOrUpdateCopy() versuchen, wenn dieser löst Ihr Problem zu sehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top