참조하는 열이 두 번째 테이블의 기본 키 열이 아닌 경우 nhibernate에서 일대일 관계를 매핑하는 방법을 찾는 중입니다. 예를 들어코드로 Nhibernate 일대일 매핑
은 두 개의 테이블이 PersonId에 1-1 관계가
Person Table
PersonId (pk)
Name
및
Passport Table
PassportId (pk)
Country
PersonId
을 고려하십시오.
내 Nhibernate 모델은 다음과 같습니다. 다음과 같이 설명 양식 this article을 바탕으로
는public class Person
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Passport Passport { get; set; }
}
public class Passport
{
public virtual int Id { get; set; }
public virtual string Country { get; set; }
public virtual Person Person { get; set; }
}
나는 관계 매핑을 정의했지만 작동하지 않았다
PersonMapping :
OneToOne(x => x.Passport, x => x.Cascade(Cascade.All));
PassportMapping :
ManyToOne(x => x.Person, x => { x.Unique(true); x.Column("PersonId");});
가 건설하고있다 다음과 같은 SQL 쿼리 :
select * from Person
left outer join Passport on Persson.PersonId = Passport.PassportId.
PassportId와 PersonId가 동일한 값을 가지고 있다고 가정하지만, 내 경우에는 다릅니다. 어떻게하면 코드로 매핑을 사용하여 매핑을 정의 할 수 있습니까? 사람에 대한 매핑 :
HasOne(x=>x.Passport).Cascade.All();
과 여권 :
References(x => x.Person).Unique();
희망
하지만 문제는 코드 매핑을위한 것입니다. – Luka