1. Introduction

Comme nous avons pu le voir lors de l'introduction aux Templates T4Templates T4, par Kevin Perriat, cette technologie nous permet de générer du code. Dans cet article, nous allons nous pencher sur un cas très précis : la génération de POCO depuis un modèle EDMX.

Dans une application en couches, nous avons généralement la couche d'accès aux données (DAL) et au-dessus, une couche métier. Dans le cadre de l'utilisation d'un modèle EDMX, nos objets métiers ressemblent à nos entités. Sur une base de données volumineuse (une centaine de tables, de nombreux champs par table) il peut donc devenir pénible de générer manuellement nos objets métiers.

C'est là que rentrent en jeu les templates T4. Nous allons nous servir de l'EDMX comme source de données, et l'utiliser afin de générer automatiquement nos POCO. Les POCO sont des objets métiers qui seront utilisés dans toute notre / nos application(s) et déconnectés de tout contexte.

2. Mise en place des templates T4

2.1. Cas 1 : dans le même projet que l'EDMX

Dans le cas présent, nous allons créer un projet qui contiendra notre EDMX. Nous utiliserons les templates T4 pour générer nos POCO automatiquement.

Pour commencer, nous allons donc créer un schéma EDMX, contenant deux entités, User et Group :

Image non disponible

Maintenant, nous allons créer notre template T4. Pour cela, ouvrons le modèle EDMX, clic droit sur une zone vide du modèle, puis "Ajouter un élément de génération de code".

Dans la nouvelle fenêtre, recherchez dans les modèles en ligne EF 4.x POCO Entity Generator For C# :

Image non disponible

Une fois validé, nous pouvons voir que deux nouveaux fichiers ont été ajoutés à notre solution :

Image non disponible
  • Model1.Context.tt : va générer notre classe d'accès aux données ;
  • Model1.tt : va générer nos POCO.

Maintenant, passons à la génération des POCO. Pour cela, ouvrons le fichier Model1.tt. Une fois ouvert, il nous suffit de faire Ctrl + s afin de lancer la génération automatique de code. Pour voir nos POCO, il nous suffit de déplier Model1.tt dans l'explorateur de solution :

Image non disponible

Si l'on ouvre un des fichiers générés, on peut s'apercevoir que toutes les propriétés de notre objet sont créées. Ici, un exemple avec la classe User :

Image non disponible

2.2. Cas 2 : dans un autre projet que l'EDMX

Dans ce second cas, nous allons déplacer nos POCO dans un autre projet. Pour cela, nous allons partir de l'étape suivant la création de notre template T4 :

Image non disponible

Nous allons donc rajouter un autre projet (ici une bibliothèque de classes) et y glisser/déposer nos fichiers .tt :

Image non disponible

À cette étape, si vous tentez de générer votre solution, vous allez voir apparaître des erreurs. En effets, nos templates T4 ne retrouvent plus notre EDMX. Nous allons donc devoir changer le chemin vers celui-ci. Il suffit d'ouvrir notre template t4 et de modifier la ligne 22 :

Image non disponible

Il est important de faire cette modification pour nos deux fichiers .tt. Une fois cela fait, il ne nous reste plus qu'à faire un Ctrl + S pour générer à nouveau nos POCO.

3. Conclusion

Dans cet article, nous avons vu comment utiliser les templates T4 pour nous aider à générer nos POCO. Je rappelle que les T4 ne se limitent pas uniquement à cette utilisation. Nous reviendrons dessus dans d'autres articles, qui je l'espère, pourront vous apporter des réponses à vos questions.

4. Remerciements

Je tiens à remercier FirePrawn et jacques_jean pour leurs relectures.