2009-05-19 15 views
0

NHibernateが削除操作を実行しない理由は何ですか?NHibernate削除操作

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

私はsession.Clear()メソッドを呼び出そうとしましたが、それはどちらも役に立ちませんでした。私は親切に混乱しています。 :/

この場合のMyTypeは、IDが&の場合のみです。操作の作成は正常に動作します。

答えて

3

セッションをフラッシュするか、Deleteをトランザクションに入れ、トランザクションをコミットします。

NHibernateは、デフォルトでSQL文の実行を可能な限り延期しようとします。

+0

を助けましたか?そして最高のNHibernateのドキュメントをどこで見つけるのですか? –

0

これは、あなたには、いくつかのサンプルコードを提供することができ...

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

この例では、トランザクションがコミットされたときにNHibernateが自身をフラッシュするため、フラッシュは不要です。コミットの前に変更をフラッシュしたい場合や、トランザクションがない場合は、フラッシュする必要があります。 http://nhforge.orgはnhibernateに関する興味深いサイトです。 –

+0

ええ...私はそれに気づいた。 "session.Delete(model); session.Flush();"に切り替えました。トランザクションなし。以前は、私のIUserType Equalsメソッドの実装でエラーが発生していませんでした。これをクリアしていただきありがとうございます。 :) –

関連する問題