2017-12-07 66 views
0

나는 사람이 사망 증명서를 가질 수있는 사람과 사망 진단서를 모델링했다. 내가있는 경우 :nHibernate 코드에 의한 매핑을 사용하여 Zero 또는 One to One

public class Person 
{ 
    public string PersonId { get; set; } 
    public virtual DeathCertificate { get; set; } 
} 

과 : DeathCertificateId 데이터베이스에 DeathCertificate의 기본 키입니다

public class DeathCertificate 
{ 
    public string DeathCertificateId { get; set; } 
    public string PersonId { get; set; } 
    public virtual Person { get; set; } 
} 

합니다. 사망 진단서에 대한

this.OneToOne(
    entity => entity.DeathCertificate, 
    mapper => 
    { 
     mapper.Access(Accessor.Property); 
     mapper.Cascade(Cascade.Detach | Cascade.Persist); 
     mapper.PropertyReference(p => p.Person); 
     mapper.Constrained(false); 
    }); 

그리고이 : 다음 사람에 대한 매핑에 다음과 같이

this.ManyToOne(
    entity => entity.Person, 
    mapper => 
    { 
     mapper.Column("PERSON_ID"); 
     mapper.Cascade(Cascade.None); 
     mapper.Unique(true); 
    }); 

불행하게도,이 내가 여부를 사람을 조회 할 때마다 다음과 유사한 SQL을 생성 가입 여부 :

select ... 
from person p 
left outer join deathcertificate dc 
    on dc.person_id = p.person_id 
where p.person_id = 'ABC123' 

그럼 모든 기능이 작동하지만 원하는 것은 사망 증명서를 명시 적으로 합치면받을 수 있습니다.

나는 내 매핑에 뭔가 잘못됐다고 생각합니다. 누구든지 도와 줄 수 있습니까?

답변