2010-07-16 4 views
3

Person과 Address의 두 클래스가 있다고 가정 해 보겠습니다.NHibernate - NHibernate는 객체 평등을 인식하고 변경은 그에 따라 행동을 저장합니까?

이용시 이렇게 주소에 대한 참조를 갖는다 :

public class Person 
{ 
    public virtual Address Residence {get;set;} 
} 

주소는 2 개의 어드레스 인스턴스 (우편 번호 및 최초의 행을 비교하여 말한다) 동일한 물리 주소를 나타내고 있는지 여부를 판정한다 .Equals 재정의있다.

두 개의 저장되지 않은 Address 객체에 대한 참조를 보유하는 저장되지 않은 Person 객체가 두 개 있다고 가정 해보십시오.이 객체는 참조 동등성 측면에서는 분리되어 있지만 .Equals 구현 측면에서 동일합니다.

NHibernate는 INSERT 또는 2 중 하나를 발행합니까?

감사

데이비드

+0

주소 엔티티 (예 : 자체 테이블이있는 매핑 된 클래스) 또는 값 개체 (예 : 구성 요소로 매핑되고 Person 테이블에 저장되는 경우) – DanP

+0

자체 엔티티입니다. 데이터베이스는 고도로 정규화되어 있습니다 (NHibernate에 대해서는별로 좋지 않습니다). – David

답변

2

그것은 두 번 삽입합니다. 두 개의 일치하는 transient 인스턴스를 동등하게 일치시키는 것은 기술적으로 가능하지 않습니다.

호출 코드는 해당 인스턴스를 일치시키고 동일한 참조로 바꾸는 역할을 담당합니다.

+0

고맙습니다. – David

관련 문제