Creare le chiavi primarie non cluster utilizzando NHibernate e SchemaExport
-
27-09-2019 - |
Domanda
Stiamo usando SchemaExport via ActiveRecord. Per impostazione predefinita, genera una tabella come questa:
create table List (
Id UNIQUEIDENTIFIER not null,
Name NVARCHAR(255) null,
OwnerId UNIQUEIDENTIFIER null,
primary key ( Id ))
SQL Server allora il default è l'aggiunta di un indice cluster per la chiave primaria. Ma io voglio che questo sia non cluster. Voglio aggiungere un indice cluster per ownerid come questo sarà molto più efficiente.
Ora, ho potuto eseguire uno script in seguito per creare un indice non cluster. Ciò comporterebbe cadere il vincolo originale chiave primaria e aggiungendo una non cluster. Tuttavia, SchemaExport ha già utilmente realizzato tutti i miei vincoli di chiave esterna che mi fermano cadere la chiave primaria.
Così ho bisogno di cadere le chiavi esterne, che hanno un nome inutile come FK4BAD9607D2BEDDB5, poi ricrearli (posso farlo di nuovo automaticamente?). E 'tutto un po' di mal di testa.
Sarebbe molto più facile se solo potessi arrivare lì in qualche modo e aggiungere un non cluster specifica alla chiave primaria come si genera. C'è un po 'rilevante del strumento di esportazione posso ignorare per fare questo?
Grazie
Soluzione
Credo che la soluzione migliore sta usando SchemaExport per creare lo script e modificare manualmente.
In caso contrario, avrete bisogno di esclusione Dialect.GetAddPrimaryKeyConstraintString
.