У меня проблема с попыткой смоделировать отношение многие-к-одному в NHibernate, где объект со стороны «один» имеет уникальное ограничение на столбец. Проблема заключается в следующем:
У меня есть две таблицы: «Персона» и «Страна». С каждым лицом связана одна и только одна страна. Страна может иметь много людей (на самом деле! :)), а название страны уникально. Ниже приведено сопоставление на стороне человека:
<many-to-one Name="Country">
<column Name="CountryId"/>
</many-to-one>
На селе:
<property name="Name" unique="true">
<column name="Name" length="50">
</property>
Теперь в базу данных я добавил уникальное ограничение для столбца Имя в таблице Страна. Если я вызываю Save () для экземпляра Person, NHibernate просто пытается выполнить INSERTS, тогда как я ожидаю, что он проверит, существует ли Название страны, и использует его идентификатор в столбце CountryID таблицы Person. Вместо этого выдается исключение, которое возникает в результате нарушения уникального ограничения в базе данных.
Мне кажется, что в Nibernate должно быть достаточно метаданных сопоставления, чтобы делать правильные вещи (или уникальный атрибут свойства не гарантирует этого?). Кто-нибудь знает, как это сделать или есть обходной путь?
Спасибо,
Мартейн