2009-05-19 2 views
0

Hibernate가 삭제 연산을 수행하지 않는 이유는 무엇입니까?Hibernate delete operation

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

나는 session.Clear() 메소드를 호출하려고했으나 그 중 하나도 도움이되지 않았습니다. 나는 혼란 스럽다. :/

MyType에는이 경우에만 Id가 있습니다. & 이름. 작업 만들기가 성공적으로 수행됩니다.

답변

3

세션을 플러시하거나 삭제를 트랜잭션에 넣고 트랜잭션을 커밋하십시오.

NHibernate는 기본적으로 가능한 한 SQL 문의 실행을 연기하려고합니다.

+0

당신이 몇 가지 예제 코드를 제공 할 수 있을까요? 그리고 최고의 NHibernate 문서를 어디에서 찾을 수 있습니까? –

0

이 도움이 ...

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

이 예제에서, 트랜잭션이 커밋 될 때 NHibernate가 스스로 플러시 할 것이기 때문에 flushing이 불필요하다. 커밋 전에 변경 내용을 플러시하거나 트랜잭션이없는 경우 플러시가 필요합니다. http://nhforge.org는 nhibernate와 관련된 흥미로운 사이트입니다. –

+0

예 ... 나는 그것을 알아 챘습니다. "session.Delete (model); session.Flush();"로 변경되었습니다. 거래없이. 이전에는 IUserType Equals 메서드 구현에서 오류의 원인이 작동하지 않았습니다. 이 문제를 해결해 주셔서 감사합니다. :) –