Question

Juste commencé à apprendre NHiberate. Il semble plutôt fastidieux d'écrire des fichiers de configuration appropriés hbm.xml pour chaque table de base de données.

La question est peut NHibernate lire dans les tables et récupérer automatiquement les relations et le fichier de configuration nécessaires ainsi que des cours de mappeur de base de données pour vous? Il semble que le programmeur doit encore faire beaucoup de travail de terrain au départ. Puis je suis tombé sur CodeSmith qui a obtenu des modèles pour NHiberate? Est-il combler l'écart?

Était-ce utile?

La solution

Vous pouvez utiliser des modèles de code, mais cela crée encore à mon humble avis de la douleur. La meilleure façon est d'utiliser Courant NHibernate . Ils ont une nouvelle fonctionnalité d'auto-mappeur, qui utilise la configuration par convention. Aucun fichier de mappage, il fait simplement des hypothèses que vous utilisez des noms similaires et peuvent définir des règles de la façon de convertir un nom d'entité à un nom de table.

Autres conseils

La génération de code peut combler cette lacune très bien, je commencé à utiliser CodeSmith, mais ils ont fait qu'un élément de paie donc je me suis déplacé à MyGeneration . Mon approche est d'attaquer le DB d'abord, le code gen les fichiers de mappage et les classes gen si elles ne sont pas déjà. Cela devient quelque chose très rapidement, idéal pour un prototype et la création de données de test.

Les fichiers de mappage, classes et DB sont alors souvent modifiés par la main. Dans certains cas, j'ai essayé d'obtenir la génération de code pour travailler dans le cadre de CI - mais il est prouvé difficile de le faire, à moins que vous soyez disciplinés sur l'endroit où vous êtes partie vous des changements de code fabriqués à la main. Les classes partielles étaient une aide, mais encore un prob pour obtenir toute l'équipe sur la même page, personne n'aime avoir leur code écrasé par un outil, même si vous pouvez rollback et fusionner.

Je travaille pour CodeSmith ... S'il vous plaît garder à l'esprit que MyGeneration n'a pas été mis à jour pour toujours ce qui signifie qu'il manque de soutien aussi. CodeSmith soutient pleinement ses produits et modèles. Cela signifie des bugs de modèle seront également fixés et vérifiés par CodeSmith.

Merci

-Blake Niemyjski

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