Est-il possible de mapper une clé composite dans un nhibernate courant où la moitié de la clé est un champ d'identité dans la base de données?

StackOverflow https://stackoverflow.com/questions/1615647

Question

Comme le dit la question, est-il possible de mapper une clé composite en nhibernate (ou non, couramment) si l'un des deux champs utilisés dans le composite est un champ d'identité?

J'ai une table dans laquelle une partie de la clé primaire est un champ d'identité et l'autre est un identifiant de locataire. Il s'agit d'une base de données existante dans laquelle la clé composite est utilisée comme clé étrangère dans l'ensemble. Il serait donc très important de modifier la base de données.

merci!

Était-ce utile?

La solution

Si c'est vraiment une colonne d'identité, alors c'est garanti d'être unique pour chaque enregistrement, non?

Si tel est le cas, vous pouvez ignorer complètement l'ID de location à des fins de mappage. Vos champs d’identité seront uniques dans votre table principale - ET vos références de clé étrangère contiendront cet identifiant unique. L’ID de location n’a donc aucune pertinence.

NHibernate ne s’inquiète pas vraiment de savoir si vous mappez exactement le schéma de votre base de données. J'ai déjà travaillé avec des bases de données traditionnelles, où j'avais défini une contrainte unique sur une colonne non-clé, puis demandé à NHibernate de l'utiliser comme clé primaire. Cela fonctionne et permet d'éviter de manière ordonnée toutes sortes d'horribles relations composite-clé. mappages.

Pensez-y. Contre-intuitif, mais cela fonctionnera probablement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top