2009-05-19 7 views
0

Aus welchen Gründen kann NHibernate den Löschvorgang nicht ausführen?NHibernate-Löschvorgang

Ich versuchte session.Clear() -Methode aufzurufen, die auch nicht geholfen hat. Ich bin irgendwie verwirrt. :/

MyType in diesem Fall hat nur Id & Name. Die Erstellung der Operation funktioniert erfolgreich.

Antwort

3

Spülen Sie die Sitzung, oder legen Sie das Löschen in eine Transaktion und die Transaktion fest.

NHibernate wird - standardmäßig - versuchen, die Ausführung von SQL-Anweisungen so weit wie möglich zu verschieben.

+0

Könnten Sie einige Beispiel-Code zur Verfügung stellen? Wo finde ich die beste NHibernate-Dokumentation? –

0

Dies trug dazu bei ...

using (var session = _sessionFactory.OpenSession()) 
{ 
    using (ITransaction tx = session.BeginTransaction()) 
    { 
     session.Delete(model); 
     session.Flush(); 
     tx.Commit(); 
    } 
} 
+1

In diesem Beispiel ist die Spülung möglicherweise nicht erforderlich, da NHibernate sich beim Ausführen der Transaktion selbst löscht. Flushing ist notwendig, wenn Sie die Änderungen vor dem Commit "spülen" möchten oder wenn Sie keine Transaktion haben. http://nhforge.org ist eine interessante Seite in Bezug auf Nhibernate. –

+0

Ja ... das ist mir aufgefallen. Auf "session.Delete (model); session.Flush();" ohne Transaktion. Zuvor funktionierte die Fehlerursache in meiner IUserType Equals-Methodenimplementierung nicht. Danke, dass du das gelöscht hast. :) –