Свободный 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
не требуется.