2009-05-19 10 views
0

Quelles sont les raisons possibles pour lesquelles NHibernate n'effectue pas d'opération de suppression?Opération de suppression NHibernate

public bool Delete(MyType model) 
{ 
    using (var session = _sessionFactory.OpenSession()) 
     session.Delete(model); 
    return true; 
} 

J'ai essayé d'appeler la méthode Session.clear(), qui n'a pas aidé non plus. Je suis un peu confus. :/

MyType dans ce cas a seulement Id & Nom. La création de l'opération fonctionne correctement.

Répondre

3

Vider la session ou placer la suppression dans une transaction et valider la transaction. Par défaut, NHibernate essaiera de différer autant que possible l'exécution des instructions SQL.

+0

Pouvez-vous fournir quelques exemples de code? Et où trouver la meilleure documentation de NHibernate? –

0

... Cela a permis

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

Dans cet exemple, le vidage peut être inutile puisque NHibernate se vide automatiquement lorsque la transaction est validée. Le vidage est nécessaire si vous voulez vider les modifications avant la validation ou, si vous n'avez pas de transaction. http://nhforge.org est un site intéressant concernant nhibernate. –

+0

Ouais ... j'ai remarqué ça. Passé à "session.Delete (model); session.Flush();" sans transaction. Auparavant, cela ne fonctionnait pas cause d'erreur dans mon implémentation de la méthode IUserType Equals. Merci d'avoir éclairci cela. :) –

Questions connexes