Создание некластеризованных первичных ключей с использованием NHibernate и SchemaExport - PullRequest
1 голос
/ 11 августа 2010

Мы используем 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 Ответ

1 голос
/ 11 августа 2010

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

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

...