У меня есть таблица под названием «TableA». В этой таблице есть два столбца (внешние ключи), которые называются «ColA» и «ColB». Я хочу создать два индекса. Один для ColA и ColB, а другой только для ColB.
В SQL это можно сделать следующим образом:
CREATE NONCLUSTERED INDEX [IX_TableA_ColA_ColB] ON TableA
(
ColA ASC,
ColB ASC
)
CREATE NONCLUSTERED INDEX [IX_TableA_ColB] ON TableA
(
ColB ASC
)
В Fluent nHibernate для создания одного индекса для двух столбцов я делаю это так:
Таблица A - относится к типу AutoMapping
ColA / ColBExpression - относится к типу Expression<Func<T, TRef>>
TableA.References(ColAExpression).Index(indexName);
TableA.References(ColBExpression).Index(indexName);
Теперь, если я пытаюсь установить другой индекс для ColB, я пытаюсь сделать это так:
TableA.References(ColBExpression).Index(otherIndexName);
Проблема в том, что индекс перезаписывается, а не соединяется, и я получаю сопоставление, подобное этому:
<many-to-one class="ColB, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" foreign-key="Fk_TableA_TableB_ColB" name="ColB">
<column name="ColBId" index="IX_TableA_ColB" />
</many-to-one>
Есть ли способ использовать Fluent nHibernate для создания сопоставления, как показано ниже?
<many-to-one class="ColB, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" foreign-key="Fk_TableA_TableB_ColB" name="ColB">
<column name="ColBId" index="IX_TableA_ColB, IX_TableA_ColA_ColB" />
</many-to-one>