by Oliver
21. March 2009 22:13
Heute war mal wieder NHibernate-Prime-Time: der Bildupload und das Löschen im Adminbereich funktionierten für einige Campingplätze problemlos, für andere gab es beim Aufruf von Session.Flush() bzw. jetzt Transaction.Commit() folgenden Fehler:
Hm, was mag das wohl für ein Fehler sein?
Ein Blick in die InnerException sollte uns mehr verraten:
Google anschmeißen und nach "Connection has been closed by peer" suchen... ein paar Seiten lesen... aber eine Antwort fehlt. Aus Verlegenheit noch ein paarmal probieren - und siehe da, irgendwie habe ich eine neue innere Ausnahme bekommen, die mir mehr sagt:
Wir haben es mit einem nicht initialisierten, not-nullable DateTime-Wert zu tun. Nur wo finden wir ihn? Das zu löscchen Image-Objekt zeigt keine Auffälligkeiten.
Der Profiler bringt's dann an's Licht: es ist der zugehörige Campingplatz, der aus bisher unerfindlichen Gründen in der DB ein NULL als DateModified zu stehen hat. Wie das dorthin gekommen ist, muss an dieser Stelle leider unbeantwortet bleiben. Aber ein beherztes SQL-Skriptlein
UPDATE Campsites SET DateModified = DateCreated WHERE DateModified IS NULL
macht alles wieder ganz. Jetzt gibt's auch keine Exception in unseren Batch-Queries mehr
Oli