Свободный Nhibernate HasMany на не первичный ключ

**Table Order**
Id (PK)
NonUniqueId

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

У меня есть устаревшая база данных, где ссылки OrderLine заказываются через не первичный ключ. Линия заказов может принадлежать многим ордерам.

Как это можно отобразить в HasMany?

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

(не будет работать, так как он использует первичный ключ Order.Id)

Ответ 1

Пробовали ли вы использовать PropertyRef?

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

Кажется, что дополнительный Map необходим, иначе бегло говорит nhibernate. Если вы сопоставляете "один-ко-многим" в файле hbm.xml, дополнительное сопоставление свойств для NonUniqueId не требуется.