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

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

我有一个遗留数据库,其中OrderLine通过非主键引用Order。订单行可能属于许多订单。流利Nhibernate HasMany非主键

这怎么可以映射到HasMany?

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

(将无法工作,因为它使用的主键Order.Id)

回答

15

您是否尝试过使用PropertyRef

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

似乎多余Map是必要的,否则功能NHibernate抱怨。如果将一对多映射到hbm.xml文件中,则不需要NonUniqueId的额外属性映射。