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

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

Ich habe eine Legacy-Datenbank, in der OrderLine die Bestellung über einen Nicht-Primärschlüssel referenziert. Eine Bestellposition kann zu vielen Bestellungen gehören.Fluent Nhibernate HasMany auf nicht primärem Schlüssel

Wie kann dies bei HasMany abgebildet werden?

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

(wird nicht funktionieren, da es die Primärschlüssel Order.Id verwendet)

Antwort

15

Haben Sie versucht PropertyRef mit?

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

Es scheint, die zusätzliche Map notwendig ist, sonst fließend nhibernate beschwert. Wenn Sie die Eins-zu-viele-Zuordnung innerhalb einer hbm.xml-Datei zuordnen, ist die zusätzliche Eigenschaftszuordnung für NonUniqueId nicht erforderlich.