이것은 공통적 인 문제인 것처럼 보이지만이를 해결하는 가장 좋은 방법은 모른다. 엔티티를 뷰에 보내고 뷰의 엔티티를 변경 한 다음 사용자가 뷰를 취소하면 해당 변경 사항을 취소 (제거) 할 수 있기를 원합니다. 이것을하는 적절한 방법은 무엇입니까.엔티티에 대한 Hibernate & Canceling 변경
여기에 내가 가지고있는 두 가지 옵션이 있지만 더 나은 다른 사람이해야한다고 생각
1) 업데이트, 변경이 허용하는 경우 ...보기에 클론을 보내 복제를 생성, 엔티티를 타고 클론의 값
2
) 원래 기업은 사용자가 취소하는 경우, NHibernate에의 캐시에서 개체를 제거하고 날 것에 대한 데이터베이스 (2),이 문제에 대한에서 다시로드 뷰에 엔티티 보내기 캐시에서 제거 된 후에도 이전 엔터티가 여전히 내 프로젝트 전체에서 참조 될 수 있어야합니다.
편집 :
좋아, 그래서 EVICT 방법 내가 방법을 구현하고 있다면 길을 가야하는 것입니다 (2). 고마워, 나는 그 중 하나의 세부 사항을 기억할 수 없었다. 그러나 내 오래된 퇴출 된 엔티티를 참조하는 뷰 객체의 문제는이 문제를 다루기가 어렵습니다. 내 사용자 지정 축출 이벤트가 발생했을 때 각각의 사용자 지정 코드를 리 바인드하지 않고 내 뷰를 자동으로 새 엔터티로 업데이트 할 수는 없습니다. 그리고 리바 인딩은 어떤 경우에는 사소하지 않을 수도 있습니다. 내가 좀 더 복잡해지기 때문에 좀 더 생각할 필요가 있지만, 지금은이 방법이 더 까다로워 보인다.
나는 그 자체의 문제가있는 방법 (1)을 고수 하겠지만 누군가 다른 아이디어가 있는지 좀 더 기다려야 할 것으로 생각한다.
편집 2 : 이것을 발견했습니다. A는 데스크톱 할 일 응용 프로그램 NHibernate에있는 건물 - -이 외에도 http://msdn.microsoft.com/en-us/magazine/ee819139.aspx
, NHibernate에이 Session.Refresh (개체 개체를 가지고 나는 꽤 많은 세부 사항에 대한 답을 커버하고 좋은 데모 프로젝트와 함께 제공됩니다 생각) 함수 정확한 문제를 해결하는 것 같습니다. 따라서 엔티티가 변경되었지만 저장 전에 취소 된 경우 Session.Refresh를 호출하여 데이터베이스에서 다시로드하고 변경 사항을 무시할 수 있습니다.
'엔티티가 관계를 계단식 때 Refresh'가 발생하는 경우, 그 자녀 (관련 단체)도 새로 고쳐집니다있는 일반적인 문제 -이 발생할 수 띄는 성능에 미치는 영향. 방금 설명한 문제에 직면했기 때문에이 정보가 다른 사용자에게 도움이 될 수 있습니다. – jweyrich