2009-09-28 6 views
0

Je suis actuellement en train d'essayer de faire la promotion d'objets d'une base de données à une autre dans mon application. Fondamentalement, je veux permettre à l'utilisateur de cliquer sur un bouton et promouvoir les changements de la mise en scène à la production, pour ainsi dire.Basculer par programme le générateur d'ID dans le fichier de mappage NH

Pour ce faire, je veux vraiment garder les ID identiques afin de faciliter le débogage. Par exemple, si l'objet a un ID de 6 dans la base de données db, je veux qu'il ait le même ID en production. Pour ce faire, nous avons désactivé l'identité sur notre base de données de production et nous avons simplement créé ces colonnes de clé primaire avec des entiers non nuls.

Dans mon fichier de mappage de mise en scène, mes ID sont mappés en utilisant le générateur "identity", mais pour la production, je veux qu'ils soient "assignés". Est-il possible de modifier cela par programme, peut-être en utilisant un intercepteur ou quelque chose de similaire?

Merci d'avance!

Répondre

0

Je ne suis pas sûr que je comprends votre question complètement, mais il me semble que vous essayez d'utiliser le même session NHibernate pour répondre aux deux environnements? Pour atteindre vos objectifs, vous cherchez des moyens de remplacer le générateur d'identifiants avant de sauvegarder en production?

Si tel est le cas, vous ne devriez pas! Au contraire, vous devez choisir une stratégie qui utilise deux sessions NHibernate différentes, c'est-à-dire une session par environnement. Donc, fondamentalement, vous devriez récupérer les objets que vous voulez promouvoir depuis l'environnement de transfert dans la session configurée avec un mappage avec un générateur d'identité, et traduire ces objets en instances d'objet attachées à une session configurée avec un mappage avec un type de générateur assigné.

Cela a-t-il un sens?

Questions connexes