Créer des clés primaires nonclustered utilisant NHibernate et SchemaExport
-
27-09-2019 - |
Question
Nous utilisons SchemaExport via ActiveRecord. Par défaut, il génère une table comme ceci:
create table List (
Id UNIQUEIDENTIFIER not null,
Name NVARCHAR(255) null,
OwnerId UNIQUEIDENTIFIER null,
primary key ( Id ))
SQL Server puis par défaut l'ajout d'un index ordonné en clusters pour la clé primaire. Mais je veux que ce soit nonclustered. Je veux ajouter un index ordonné en clusters à OWNERID car ce sera beaucoup plus efficace.
Maintenant, je pouvais courir après un script pour créer un index non ordonnés en clusters. Cela impliquerait l'abandon de la contrainte de clé primaire d'origine et l'ajout d'un non-cluster. Cependant, SchemaExport a déjà créé obligeamment toutes mes clés étrangères qui me arrêtent tomber la clé primaire.
Je dois donc laisser tomber les clés étrangères, qui ont un nom comme inutile FK4BAD9607D2BEDDB5, puis les recréer (puis-je faire à nouveau automatiquement?). Il est tout un peu d'un mal de tête.
Il serait beaucoup plus facile si je pouvais obtenir là-bas et en quelque sorte ajouter un nonclustered spécification à la clé primaire telle qu'elle génère. Y at-il un peu pertinent de l'outil d'exportation que je peux passer outre le faire?
Merci
La solution
Je crois que votre meilleure option utilise SchemaExport pour créer le script, et le modifier manuellement.
Dans le cas contraire, vous devrez override Dialect.GetAddPrimaryKeyConstraintString
.