У меня проблема с общим столбцом между составным идентификатором и отношением "многие к одному" в большой устаревшей базе данных.Я упростил задачу до отображения ниже, которое воспроизводит проблему:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Alfa">
<composite-id name="AlfaId" class="AlfaCompositeId">
<key-many-to-one name="Bravo" class="Bravo" column="BRAVO_ID" />
<key-property name="CharlieId1" column="CHARLIE_ID1" />
</composite-id>
<many-to-one name="C" class="Charlie">
<column name="CHARLIE_ID1" />
<column name="BRAVO_ID" />
</many-to-one>
<property name="CookieA" column="COOKIE_A" />
</class>
<class name="Bravo">
<id name="BravoId" column="BRAVO_ID" />
<property name="CookieB" column="COOKIE_B" />
</class>
<class name="Charlie">
<composite-id>
<key-property name="CharlieId1" column="CHARLIE_ID1" />
<key-many-to-one name="Bravo" class="Bravo" column="BRAVO_ID" /> <!-- Reused column !!! -->
</composite-id>
<property name="CookieC" />
</class>
</hibernate-mapping>
При попытке сохранить сущность Alfa будет получено:
IndexOutOfRangeException (Message=Invalid index 3 for this SqlParameterCollection with Count=3).
NHibernate пытается добавить значение столбца BRAVO_ID дважды.Один раз для составного идентификатора и один раз для многих на один FK.
Любой способ, как перейти к отображению XML, чтобы сказать NHibernate игнорировать второе отображение столбца 'BRAVO_ID'?
Любые советы приветствуются.