2009-03-25 7 views
6

Commencé à apprendre NHiberate. Il semble plutôt fastidieux d'écrire les fichiers de configuration hbm.xml appropriés pour chaque table de base de données.Utilisation de NHibernate avec Codesmith pour générer ORM

La question est peut NHibernate lire dans des tables et récupérer automatiquement les relations et le fichier de configuration nécessaire ainsi que des classes de mappeur de base de données pour vous? Il semble que le programmeur doit encore faire beaucoup de travail au début. Puis je suis tombé sur Codesmith qui a des modèles pour NHiberate? Est-ce que cela comble le vide?

Répondre

4

Vous pouvez utiliser des modèles de code, mais cela crée toujours une douleur à mon humble avis. Le meilleur moyen est d'utiliser Fluent nHibernate. Ils ont une nouvelle fonctionnalité de mappage automatique, qui utilise la configuration par convention. Aucun fichier de mappage, il suppose simplement que vous utilisez des noms similaires et que vous pouvez définir des règles de conversion d'un nom d'entité en nom de table.

1

La génération de code peut très bien remplir cette lacune, j'ai commencé à utiliser CodeSmith, mais ensuite ils ont fait un article payant, donc je suis passé à MyGeneration. Mon approche consiste à attaquer la base de données en premier, le code gen les fichiers de mapping, et les classes gen si elles n'existent pas déjà. Cela devient très rapide, parfait pour un prototype et la création de données de test.

Les fichiers de mapping, classes et DB sont souvent ensuite modifiés à la main. Dans certains cas, j'ai essayé de faire fonctionner la génération de code dans le cadre de CI - mais cela s'est avéré difficile à faire, à moins d'être discipliné à propos de l'endroit où vous vous séparez. Les classes partielles ont été une aide, mais toujours un problème pour obtenir l'ensemble de l'équipe sur la même page, personne n'aime avoir son code écrasé par un outil, même si vous pouvez ensuite revenir en arrière et fusionner.

+0

dernier projet que j'étais sur ce code utilisé gen'ed désactivé le gène de code à mi-chemin quand nous ne pouvions pas garder la mise à jour du générateur assez rapidement .... En – JoshBerke

+0

votre avis, en plus d'être libre, est-ce que MyGeneration est un meilleur code-gen? – devXen

+0

Je n'ai pas assez d'expérience avec CodeSmith ou autres, je trouve ça original mais bon. C'est maintenant open source, et les templates sont écrits en C# - tous ces éléments sont des plus. – MrTelly

1

Je travaille pour CodeSmith ... S'il vous plaît gardez à l'esprit que MyGeneration n'a pas été mis à jour pour toujours ce qui signifie qu'il manque également de support. CodeSmith supporte entièrement ses produits et modèles. Cela signifie que tous les bogues de modèle seront également corrigés et vérifiés par Codesmith.

Merci

-Blake Niemyjski

+0

Même si je suis d'accord que MyGeneration n'a pas été mis à jour depuis longtemps, dans le but d'une divulgation complète, il convient de noter que vous êtes un développeur actif sur CodeSmith. – furtive

+0

Oui, c'est vrai. J'ai mis à jour la plupart de mes messages pour l'indiquer. –

Questions connexes