2011-03-06 3 views
11

내 nhibenate 세션에서 AutoMapper로 객체를 매핑하고 afterMap 액션에서 속성 비교를 위해 DB에서 객체를 추출하기 때문에 객체의 새 인스턴스를 만듭니다. 그래서 AutoMapper는 동일한 ID를 가진 하나의 객체의 두 인스턴스를 만듭니다. 세션을 커밋하려고하면 동일한 ID를 가진 개체에 오류가 발생합니다.NHibernate 세션에서 객체 연결 해제

그래서 속성을 비교 한 후에 추출한 개체의 연결을 끊고 싶습니다. 그 후 세션을 커밋 할 수 있습니다.

어떻게해야합니까?

감사합니다.

답변

13

session.Evict(persistentObject)을 사용하면 세션에서 영구 객체를 제거 할 수 있습니다. 이렇게하면 첫 번째 레벨 캐시에서 객체가 제거되므로 세션을 비울 수 있습니다.

+0

모든 세션에서 제거 할 수 있습니까? – Joel

+0

당신이 정말로 펑키 한 것을하지 않는다면, 당신의 사물은 최대 하나의 세션에 연결될 것입니다 : 그것을 수화 한 것 – mookid8000

+0

정말 진실 이었으면 좋겠습니다. 나는 재미있는 일을하는 기존의 코드를 가지고 있는데,이 예외를 보았고, 몇 가지 해킹 된 해결 방법이 있기를 바랐지만, 오 ... – Joel

관련 문제