У меня есть устаревшая таблица с составными ключами, которые сопоставляются с 3 другими таблицами, поскольку в этой таблице есть другие атрибуты, так как это не простая таблица сопоставления, я не могу использовать решение набора "многие ко многим" для сопоставления этого .
Вот что я сделал:
<class name="classA" table="A">
<composite-id name="ID" class="AKey">
<key-many-to-one name="Id_one" class="One" column="Id_one" />
<key-many-to-one name="Id_two" class="Two" column="Id_two" />
<key-many-to-one name="Id_three" class="Three" column="Id_three" />
</composite-id>
AKey — это просто структура, содержащая три идентификатора, а Id_one, Id_two и Id_three определены как int в соответствующих классах.
public struct Akey {
public int Id_one { get; set; }
public int Id_two { get; set; }
public int Id_three { get; set; }
}
Компилируется нормально, но при попытке запустить выдает сообщение об ошибке:
NHibernate.QueryException : несоответствие типов в NHibernate.Criterion.SimpleExpression: идентификатор ожидаемого типа AKey, фактический тип System.Int32
Посоветуйте, пожалуйста, что я сделал не так или упустил.
Огромное спасибо!