Ich fange die GenericADOException mit InnerException.Message = "Eindeutige Schlüsselverletzung ...", für dem Benutzer mitteilen, dass die eingegebene Anmeldung bereits verwendet wird.
nach, dass ich versuche etwas date (Session.CreateCriteria) i diesen Fehler zu erhalten: null ID in "MyEntityType" -Eintrag (Sie die Session nicht spülen, nachdem eine Ausnahme auftritt)Null-ID in "MyEntityType" -Eintrag (die Sitzung nach einer Ausnahme nicht leeren) beim Versuch, Session.GetAll nach einer GenericADOException
6
A
Antwort
7
http://www.nhforge.org/doc/nh/en/index.html#manipulatingdata-exceptions
If the ISession throws an exception you should immediately rollback the transaction, call ISession.Close() and discard the ISession instance. Certain methods of ISession will not leave the session in a consistent state.
Haben Sie die Sitzung nach der Ausnahme weggeworfen und eine neue Sitzung gestartet?
1
Sie können das Objekt aus dem Kontext entfernen und weiter, wenn Sie wie folgt vorgehen:
public void Save() {
try
{
Session.SaveOrUpdate(this);
}
catch
{
// If the object as a null identifier everything else fails. Remove from context
if (Session.GetIdentifier(this) == null)
((SessionImpl)Session).PersistenceContext.EntityEntries.Remove(this);
throw;
}
}
Verwandte Themen
- 1. Suche nach einer leeren Datei in C++
- 2. Objekt nach einer Ausnahme zurückgegeben?
- 3. Wie überprüfe ich nach einer leeren Scheibe?
- 4. Hinzufügen einer leeren Zeile nach einer Gruppe in Sql
- 5. Debugging einer leeren Antwort nach einer POST-Anfrage
- 6. Reraise (gleiche Ausnahme) nach dem Abfangen einer Ausnahme in Ruby
- 7. NHibernate - "GenericADOException: konnte nicht Abfrage ausführen"
- 8. SimpleMembershipProvider zerstört die Sitzung nicht nach WebSecurity.SignOut
- 9. Rubin: Weiter eine Schleife nach einer Ausnahme
- 10. Try-catch nach Versuch Versuch einer anderen, die ohne Ausnahmen funktioniert
- 11. Wie kann ich nach einer leeren Zeichenfolge in MyBatis suchen?
- 12. MessagingException: Fehler beim Ausführen einer Sitzung; verschachtelte Ausnahme ist java.lang.IllegalStateException: SFTP Sitzung konnte nicht erstellt werden
- 13. Postsharp: Wie der Rückgabewert nach einer Ausnahme
- 14. gprolog: Erhalten einen Stacktrace nach einer Ausnahme
- 15. Warum schlägt meine VC 2005 x64 Debugging-Sitzung immer beim ersten Versuch (aber nicht beim zweiten Versuch) fehl?
- 16. Fehler beim Versuch, Homestead nach Vagrant update
- 17. Pipeline-Blockierung nach einer Ladeanweisung, aber nicht nach einer Additionsanweisung
- 18. Parse zerstörte Sitzung nach dem Versuch zu speichern PFUser
- 19. Leeren Sie den Inhalt einer TextArea nach dem Senden
- 20. Einfügen einer leeren Seite nach jedem Datensatz im Crystal Report
- 21. Laravel doppelte Eintrag nach Kraft löscht
- 22. Beenden der LLDB-Sitzung nach einer definierten Zeitspanne
- 23. UnicodeDecodeError beim Protokollieren einer Ausnahme in Python
- 24. Suchen nach leeren Zellen in einer bestimmten Spalte in einer CSV-Datei für alle Zeilen?
- 25. Verhindern DOMDocument leeren Leerzeichen nach leeren Tags
- 26. Schleife nach Abfangen einer Ausnahme in try/catch fortführen
- 27. Fortsetzung in Visual Studio-Debugger nach einer Ausnahme
- 28. Wie wiederhole ich nach einer Ausnahme in Python?
- 29. Ausnahme beim Versuch, `ThenInclude` in EF Core
- 30. Erstellen einer neuen Sitzung nach der Authentifizierung mit Passport
wenn ich Session.Clear tun(), nachdem die Ausnahme ausgelöst wurde, als ich werde dieses Problem nicht, aber ich denke nicht, dass es eine gute Idee ist, die Sitzung für die gesamte Webanwendung zu löschen, weil ein einziger Benutzer eine Ausnahme hat – Omu
Sie müssen die Sitzung nach einer Ausnahme schließen. Ich würde vorschlagen, dass Sie Ihre App so umschreiben, dass sie zuerst nach dem Login fragt, bevor Sie versuchen, es einzufügen, damit Sie die gleiche Funktionalität erhalten, ohne dass eine Datenbankausnahme ausgelöst wird. Es scheint, dass Sie aufgrund Ihrer Implementierungsauswahl derzeit eine Ausnahme in einer Ausnahmezustand erhalten. Es ist auch eine bewährte Methode, eine Sitzung pro Webanforderung und keine Sitzung pro Webanwendung zu erstellen. –