2010-02-22 7 views
0

Je travaille sur une application commerciale asp.net et utilise nhibernate. Mon objectif d'utiliser nhibernate est de minimiser/éviter les efforts de portage d'applications sur différentes bases de données (Oracle, SQL Server, Postgres, etc.).Autres requêtes de schéma de base de données dans nhibernate

J'ai un scénario dans lequel je dois vérifier dynamiquement le schéma de la table de base de données et y créer des fonctionnalités. La première chose qui me vient à l'esprit est de créer des procédures stockées et de les porter sur différentes bases de données. Ma procédure stockée ressemble à ceci ...


SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = (
    SELECT MasterTableName FROM SystemDocument WHERE DocId = @vDocumentID 
) 

Maintenant, j'ai 2 questions ici ...

1- Y at-il autre dans NHibernate pour y parvenir en évitant les procédures stockées ?

2- Si la réponse de la première question est NON :(alors comment puis-je remplir un DTO/POCO qui peut contenir les colonnes et leurs types de la table sans mapper avec NHibernate?

Je serai très reconnaissants pour vos suggestions à ce sujet.

Merci, Asif

Répondre

0

Vous pouvez utiliser SQL régulière et projet sur un objet DTO. J'utilise une requête nommée il sera plus facile de changer. Je ne Je ne sais pas s'il existe un moyen de mapper automatiquement ces requêtes nommées en fonction du dialecte actuel utilisé

+0

Merci pour la réponse, mais si j'utilise une requête nommée, elle ne sera pas portable pour les bases de données autres que SQL Server. Y a-t-il une solution de contournement? – ak1

+0

Ouais c'est le problème. Je n'ai jamais vraiment traité de cela auparavant, mais je suppose que vous auriez besoin de plusieurs versions de cette requête pour chaque dialecte. Donc, plusieurs fichiers hbm.xml avec la même requête nommée diffèrent des implémentations. Ensuite, vous devez vous rappeler d'utiliser le bon en fonction du dialecte. – dotjoe

Questions connexes