2013-03-12 56 views
0

忍受着我,這是一個遺留系統,所以表關係並不是主意。如何使用Fluent NHibernate中的非ID字段進行引用?

狗有場ID,所有者和名稱

狗窩有ID,所有者和名稱。它沒有對狗的外鍵引用。相反,它是由所有者和名稱相關的。

在我的DogMap中,我需要能夠告訴它如何引用它的狗窩。我怎麼做?當我嘗試

Reference(x=>x.DogHouse). 

我在點之後放什麼?這不是ID,應該是所有者和名稱。

回答

3

非ID字段必須是一個屬性

Reference(x=> x.DogHouse, "Owner").PropertyRef(house => house.Owner).Readonly(); 

,因爲二者都需要,我們不得不使用一些技巧

DogHouse FakeReferenceProp { get; set; } 
public DogHouseMap() 
{ 
    Component(x => FakeReferenceProp, c => 
    { 
     c.Map(x => x.Owner, "Owner").Readonly(); 
     c.Map(x => x.Name, "Name").Readonly(); 
    }); 
} 

// in DogMap 
Reference(x=> x.DogHouse).Columns.Add("Owner", "Name").PropertyRef(house => FakeReferenceProp).Readonly(); 
相關問題