2011-06-12 4 views
1

새로운 기능 nhibernate입니다. 저장소 패턴을 사용하여 작은 C# 응용 프로그램을 개발 중입니다. 내 저장소에서 엔티티가 저장 될 때 감지하기위한 간단한 훅을 구현했습니다. 엔터티의 이벤트 처리기를 호출하여 엔터티에 필요한 모든 작업을 수행합니다.nhibernate SaveOrUpdate - 수행 할 작업을 쉽게 결정합니다.

제 문제는 SaveOrUpdate 메소드도 사용하고 있다는 것입니다. 저장 작업에서만 이벤트 처리기를 호출하면되므로 SaveOrUpdate 호출에서 저장 또는 업데이트를 구별 할 수 없습니다.

간단히 말해서 어떤 작업이 수행되는지 파악하는 간단한 방법이 있습니까? 저장 또는 업데이트입니까?

답변

6

nHibernate는 엔터티의 ID가 설정되지 않은 경우 Save 메서드를 호출하고, 그렇지 않으면 Update 메서드를 호출합니다. 여기

봐 :

SaveOrUpdate Vs Update and Save in NHibernate

는 "될 saveOrUpdate()는 식별자에 보이는 위의 필요한 것을 결정한다."

+0

계단식 저장을 감지하고 완료되면 조치를 취할 수있는 방법이 있습니까? – vondip

+1

인터셉터 클래스를 찾아 볼 수 있다고 생각합니다. 인터셉터를 사용하면 OnSave, OnFlushDirty 등을 오버라이드하는 기본 NHibernate 메소드를 제어 할 수 있습니다. http://elegantcode.com/2008/05/15/implementing-nhibernate-interceptors/ http://knol.google.com/k/fabio-maulo/nhibernate-chapter-11-interceptors-and/1nr4enxv3dpeq/14# – danyolgiax

관련 문제