Есть ли способ работы с сочетанием суррогатных ключей и уникального свойства в nhibernate? - PullRequest
0 голосов
/ 31 марта 2012

Я читал в Интернете о проблемах, с которыми другие коллеги-разработчики сталкиваются с nhibernte. Однако я не нашел случая, похожего на проблему, с которой я столкнулся.

Проблема связана с суррогатными ключами в отображении nhibernate. До использования следующего сопоставления я использовал свойство Target в качестве первичного ключа. Поскольку в других таблицах поле Target называется внешним ключом, размер базы данных увеличивается больше, чем я ожидал. Поэтому мне пришлось использовать ключ Surragote в качестве первичного ключа и сделать Target уникальным свойством для сохранения целостности данных.

<id type="guid" name="Id">
  <generator class="guid.comb" />
</id>

<property name="Target" unique="true" unique-key="Target" />
<property name="IsProcessed" />

Проблема связана с ISession.SaveOrUpdate (). Я понимаю, что nhibernate будет пытаться сохранить, когда свойство id пусто и обновляет в противном случае. Есть ли способ сказать nHibernate, чтобы выбрать, используя уникальное свойство, прежде чем пытаться вставить?

Ваши комментарии действительно ценятся.

...