Старый, но мне есть что добавить, так как я столкнулся с такой же проблемой:
Stefan Steinegger правильно ответил для не -уникальных многоколоночных индексов, но не учел код для уникальных многоколоночных индексов. Для тех, кого вы можете использовать:
<property name="A" unique-key="AB" />
<property name="B" unique-key="AB" />
Итак, по сути, то же самое, но с другим именем атрибута.
Интересно отметить, что для уникальных индексов NHibernate генерирует свое собственное имя для ключа, но для неуникальных индексов он использует все, что вы ему даете.
Например, приведенный выше код НЕ будет генерировать уникальный индекс с именем «AB», а скорее будет выглядеть как UQ__TableName__7944C87104A02EF4
.
Это описано в разделе 19.1.1 документации NHibernate:
Некоторые теги принимают атрибут index
для указания имени
Индекс для этого столбца. Атрибут unique-key
можно использовать для группировки
столбцы в ограничении единичного ключа. В настоящее время указанный
значение атрибута уникального ключа не , используемое для именования ограничения,
только для группировки столбцов в файле сопоставления.
Однако следующее:
<property name="A" index="AB" />
<property name="B" index="AB" />
просто сгенерирует индекс с именем "AB".