2013-05-08 21 views
10
**Table Order** 
Id (PK) 
NonUniqueId 

**Table OrderLine** 
Id (PK) 
OrderNonUniqueId 
Text 

OrderLine referansları birincil olmayan anahtar yoluyla sipariş verildiğinde eski bir veritabanım var. Sipariş Hattı birçok Siparişe ait olabilir.Akıcı Nhibernate HasMany birincil anahtarda yok

Bu, HasMany'de nasıl haritalanabilir?

cevap

15

Eğer PropertyRef kullanarak denediniz

**OrderMap** 
HasMany(x => x.OrderLines) 
     .KeyColumn("OrderNonUniqueId") 

(birincil anahtar Order.Id kullandığından çalışmayacaktır)?

public OrderMap() 
{ 
    ... 
    Map(x => x.NonUniqueId); 
    HasMany<OrderLine>(x => x.Lines) 
    .KeyColumn("OrderNonUniqueId") 
    .PropertyRef("NonUniqueId"); 
    ... 
} 

Ekstra Map nhibernate şikayet aksi akıcı gereklidir görünüyor. Hbm.xml dosyasındaki bire çoğunu eşlerseniz, NonUniqueId için ekstra özellik eşlemesi gerekmez.