예제 코드에서는 엔터티에 Update
을 호출합니다. 분리 된 엔티티를 갱신하는 경우, 현재 NHibernate 세션에 의해 추적되지 않는 엔티티.
분리 된 엔티티를 갱신 할 때 당신은 NHibernate에게 제공된 엔티티를 가져 와서 데이타베이스에서 그것을 갱신하기위한 완전히 새로운 상태라고 생각하게됩니다. 그래서 당신이 설정하지 않은 모든 속성들은 디폴트 값을 가질 것이고 NHibernate는 그것들이 디폴트 값들로 데이터베이스를 업데이트해야한다고 생각할 것입니다.
하나의 속성 만 변경하려면 먼저 NHibernate로 속성을로드하고 속성을 변경 한 다음 Flush
세션을 변경해야합니다.
var r = session.Load<Rezervace>(id);
r.Stav = 1;
session.Flush();
엔티티가 현재 세션에서로드되었을 때 업데이트 할 엔티티를 NHibernate에 알릴 필요가 없습니다.
기본적으로 NHibernate는 모든 속성을 이전 값으로 변경하고 변경된 값을 새 값으로 업데이트합니다. Rabban answer에 의해 말했듯이,이 동작을 변경하기 위해 클래스 매핑에서 dynamic-update
을 활성화하고 NHibernate가 변경된 속성 만 업데이트하도록해야합니다.
참고 :
지금 내가 대답하지만해야 고려해
- 깃발 질문을 폐쇄하기위한, 하나 등 불분명하거나 (현재 불분명 완료) 중복.
- 기존 질문에서 현재 가능한 답변을 가리 킵니다. (this comment에서 완료.)
This answer 우리가 분리 된 경우에는 다른 질문 중 하나가 내 방식보다 낫습니다.
당신이 하나의 매개 변수를 말할 때 당신은 무엇을 의미합니까? –
당신의 매핑에서'Dynamic-Update'를 true로 설정할 수 있습니다. 그러나 당신은 당신이이 행동을 원할 때마다 모든 수업에 대해 이것을 설정해야합니다. – Rabban
@Rabban ok, 그러면 어떻게 업데이트 할 수 있습니까? rezervaceDao.Update (r.Stav); did not work – pajasv