3
我試圖找出一種方法來映射nhibernate中的一對一關係當引用列不是第二個表上的主鍵列時。通過代碼Nhibernate一對一映射
例如考慮
Person Table
PersonId (pk)
Name
和
Passport Table
PassportId (pk)
Country
PersonId
兩個表對PERSONID一對一的關係。
我的Nhibernate模型如下所示。
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; }
}
基於解釋的形式this article在我定義的映射關係如下,但它沒有工作
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具有相同的值,但在我的情況下它們是不同的。如何在使用代碼映射的情況下定義我的映射。
這ansver使用功能NHibernate但問題是映射到代碼。 – Luka 2016-07-06 18:19:11