2009-05-13 23 views
6

Quelqu'un a-t-il porté le modèle netTiers sur les modèles T4 de Visual Studio? Ou y a-t-il un système de portée similaire? Est-ce que quelqu'un utilise T4 dans un environnement de travail? Quelles sont les différences majeures (le cas échéant) entre Codesmith et T4?CodeSmith v.s. T4: .netTiers level suite

+0

Je suis également intéressé de savoir comment les gens surmontent le fait que chaque modèle T4 ne génère qu'un seul fichier de sortie. –

+0

http://www.olegsych.com/2008/03/how-to-generate-multiple-outputs-from-single-t4-template/ –

Répondre

5

Je me suis amusé en T4 pour un peu - hé, si c'est gratuit et inclus dans VS2008, utilisez-le, non?

Mon idée de base était de créer un ensemble de modèles pour lire une table de base de données, et créer nos propres classes ORM "roll-your-own".

J'ai abandonné sur T4, frustré et incapable d'obtenir même les choses les plus basiques à travailler qui sont un morceau de gâteau dans CodeSmith.

Même une tâche simple telle que la sélection du serveur, de la base de données et de la table à utiliser ne peut pas être effectuée efficacement dans T4 à partir de "l'extérieur" du modèle lui-même. Oui, vous pouvez coder en dur toutes ces valeurs sous forme de valeurs de chaîne dans un modèle T4 - mais allez, ce n'est vraiment pas une solution, n'est-ce pas? CodeSmith prend très bien en charge le choix du serveur, de la base de données et des tables. Vous pouvez les définir comme propriétés sur le modèle et choisir ce que vous voulez et laisser le modèle faire votre travail sur la table que vous avez choisie. Ma conclusion: T4 est prometteur, mais "pas là" pour le moment. Cela pourrait fonctionner pour des scénarios très simples, mais pour l'instant, c'est à mon avis loin d'être aussi flexible et puissant que celui de Codesmith.

Pour un scénario tel que .netTiers, je resterais avec Codesmith pour le moment.

Marc

+0

Vous pourriez bien sûr avoir les paramètres dans un modèle séparé et l'inclure dans votre modèle de génération principale. De cette façon, votre fichier de paramètres sera petit et tout sera contenu dans un seul fichier. Peut être appelé 'settings.tt' –

+0

@Robert: bien sûr - mais cela ne résout pas le problème fondamental - il n'y a pas de moyen facile de passer des paramètres aux modèles T4 en ce moment - un inconvénient ** MAJEUR ** à mon avis –

+0

Je sais C'est une vieille question, mais au cas où quelqu'un tomberait dans la discussion - les T4 ont maintenant une directive "Parameter". http://www.olegsych.com/2010/05/t4-parameter-directive/ – EBarr

5

T4 n'est pas CodeSmith. Oui, vous spécifiez les paramètres dans un fichier .tt sous forme de code C# ou Visual Basic et utilisez une directive < # @ include #> pour référencer l'implémentation réelle de la logique de génération de code. Ce n'est pas plus difficile à coder que de spécifier les mêmes informations dans un fichier XML avec CodeSmith.

Pour une suite de modèles T4 de type NetTiers, consultez Architecture S # arp: http://code.google.com/p/sharp-architecture/.

1

Si vous recherchez une implémentation T4 d'une DAL bien prise en charge qui est Open Source avec une interface Linq ainsi que sa propre interface Fluent qui créera des wrappers pour les tables, les processus stockés, les vues, etc. Ensuite, vous devez essayer SubSonic 3.0. SubSonic 2.2 a la même qualité moins l'interface T4 et l'interface Linq et est en mode release. SubSonic 3.0 est en Alpha mais vous pouvez télécharger le code ou un fichier .dll et les modèles T4 si vous le souhaitez.