2010-10-28 3 views
3

J'ai besoin des contraintes créées de la manière suivante:plusieurs clés uniques dans NHibernate

CONSTRAINT [IX_Unique_1] UNIQUE NONCLUSTERED 
(
    [Ordering] ASC, 
    [Description] ASC 
), 
CONSTRAINT [IX_Unique_2] UNIQUE NONCLUSTERED 
(
    [Description] ASC 
) 

J'ai la cartographie NHibernate suivante:

<property name="Description" column="Description" type="String" unique-key="IX_Seed_Template_Fields_Result" /> 

<property name="Ordering" column="Ordering" type="Int32" unique-key="IX_Seed_Template_Fields_Result" /> 

Alors, comment puis-je ajouter une contrainte unique séparée juste pour la Colonne de description?

+0

n'est pas la première contrainte inutile, en raison de la seconde? – mathieu

Répondre

4

Si vous ne vous souciez pas les noms d'index dans la base de données, vous pouvez mapper comme ceci:

<property 
    name="Description" 
    column="Description" 
    type="String" 
    unique-key="Description, Ordering_Description" /> 

<property 
    name="Ordering" 
    column="Ordering" 
    type="Int32" 
    unique-key="Ordering_Description" /> 

vous pouvez fournir une liste séparée par des virgules des noms d'index. Toutes les colonnes qui ont le même nom dans la liste sont ajoutées au même index.

2

Utilisez <database-object> pour créer des index supplémentaires.

5.6. Auxiliary Database Objects

+0

donc si j'utilise ceci, je dois écrire manuellement l'instruction CREATE INDEX? – H77

+0

Pourquoi les index sont-ils créés manuellement? Vous pouvez simplement spécifier l'attribut d'index dans les fichiers de mappage. –

+0

@Stefan: Je ne savais pas que vous pouviez écrire plusieurs noms d'index dans l'attribut 'unique-key'. Si cela fonctionne, votre réponse est meilleure que la mienne (je l'ai upvoted). Je ne sais pas si cela fera une différence après 10 mois, mais ... :-) –

Questions connexes