Управление уникальностью в композитном элементе NHibernate - PullRequest
1 голос
/ 27 ноября 2010

У меня есть следующее отображение:

...
<set name="Tests" table="InstrumentTests">
   <key column="InstrumentId" />
   <composite-element class="InstrumentTest">
      <property name="TestInstrumentId" not-null="true" />
      <property name="OtherTestId" />
   </composite-element>
</set>

Я бы хотел сделать InstrumentId и TestInstrumentId уникальными, чтобы таблица InstrumentTest не могла содержать:

InstrumentId TestInstrumentId OtherTestId
 1             TEST1            ABC
 1             TEST1            BCD  <--- NO
 2             TEST1            ABC  <--- OK, different InstrumentId

Может быть, то, что я хочу, невозможно с использованием составного элемента, но как мне это отобразить?

1 Ответ

1 голос
/ 28 ноября 2010

Хорошо, я нашел решение. Мне нужно реализовать Equals и GetHashCode для класса InstrumentTest.

В документации nHiberntate четко указано:

Примечание: если вы определяете ISet составных элементов, очень важно правильно реализовать Equals () и GetHashCode ().

...