|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : avril 2006 Messages : 346 ![]() |
Bonsoir,
l'identifiant d'une table est une chaîne de caractères préfixés par 2 lettres suivi d'un nombre incrémenté de 1 à chaque nouvel enregistrement. Ce nombre est stocké dans une table de référence. Ainsi, lors de la création d'un nouvel enregistrement, il faut pour générer l'identifiant: - lire le compteur sauvegardé dans la table de référence, - incrémenter de 1, - préfixer ce nombre par 2 lettres, - enregistrer le nouvel enregistrement, - sauvegarder la nouvelle valeur du compteur dans la table de référence Est-il possible que NHibernate génère l'identifiant du nouvel enregistrement lors de l'ajout dans la base de données en réalisant les actions décrites ci-dessus ? Merci d'avance, Zoax |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() ![]() Thomas LevesqueDéveloppeur .NET Inscription : février 2004 Messages : 17 838 ![]() |
C'est possible, mais pas très simple... il faut que tu implémentes un générateur d'identité, c'est à dire une classe qui implémente IIdentifierGenerator. Tu trouveras (un peu) plus de détails ici... la doc de NHibernate est malheureusement presque inexistante
![]() Mais cette approche n'est pas très recommandée... en tous cas Ayende Rahien dit qu'il vaut mieux l'éviter, et vu que c'est certainement un des plus grands experts de NHibernate, j'aurais tendance à le croire Si tu peux, il vaudrait mieux modifier un peu la structure de la base : crée une nouvelle clé primaire numérique, et change ta clé primaire actuelle pour que ce ne soit plus une clé primaire mais une simple colonne avec une contrainte d'unicité
__________________
Pas de questions techniques par MP ! Le forum est là pour ça... |
|
00
|
|
|
#3 | |
|
Membre confirmé
![]() Inscription : avril 2006 Messages : 346 ![]() |
Bonsoir Tomlev,
merci une fois de plus pour la réponse. Citation:
Penses-tu que je devrais gérer l'incrémentation dans la couche métier en incluant toutes les étapes au sein d'une transaction ? Merci d'avance, Zoax |
|
|
|
00
|
|
|
#4 |
![]() ![]() ![]() ![]() Thomas LevesqueDéveloppeur .NET Inscription : février 2004 Messages : 17 838 ![]() |
A vrai dire je ne sais pas trop... mais il me semble que ce genre de chose n'a rien à faire dans la couche métier, vu que c'est lié à l'accès aux données
__________________
Pas de questions techniques par MP ! Le forum est là pour ça... |
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() |
Posez un TRIGGER INSTEAD OF INSERT sur votre table qui gérera celà proprement.
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. MCTS Database Development |
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Inscription : avril 2006 Messages : 346 ![]() |
Bonjour,
merci pour la réponse. En réalité, je ne peux malheureusement apporter aucune modification à la base. C'est dommage. Faut que je fasse avec. Merci Zoax |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com