Создание некластеризованных первичных ключей с использованием NHibernate и SchemaExport

Мы используем SchemaExport через ActiveRecord. По умолчанию он генерирует таблицу следующим образом:

create table List (
  Id      UNIQUEIDENTIFIER   not null,
  Name    NVARCHAR(255)   null,
  OwnerId UNIQUEIDENTIFIER   null,
    primary key ( Id ))

SQL Server по умолчанию добавляет кластерный индекс для первичного ключа. Но я хочу, чтобы это было некластеризованным. Я хочу добавить кластерный индекс в OwnerId, так как это будет намного эффективнее.

Теперь я могу запустить скрипт для создания некластеризованного индекса. Это будет включать удаление исходного ограничения первичного ключа и добавление некластеризованного ограничения. Однако, SchemaExport уже услужливо создал все мои ограничения внешнего ключа, которые мешают мне отбрасывать первичный ключ.

Поэтому мне нужно отбросить внешние ключи, которые имеют бесполезное имя, например FK4BAD9607D2BEDDB5, а затем воссоздать их (могу ли я сделать это снова автоматически?). Это все немного головная боль.

Было бы намного проще, если бы я мог как-то попасть туда и добавить некластеризованную спецификацию к первичному ключу при его генерации. Есть ли соответствующий бит инструмента экспорта, который я могу переопределить, чтобы сделать это?

Спасибо

1 ответ

Решение

Я считаю, что ваш лучший вариант - использовать SchemaExport для создания скрипта и его изменения вручную.

В противном случае вам нужно переопределить Dialect.GetAddPrimaryKeyConstraintString,

Другие вопросы по тегам