Templates T4 et Entity Framework

Kevin Perriat

Dans cet article, nous allons voir comment utiliser les templates T4 pour générer nos POCO par rapport à un EDMX.

Cet article fait partie d'un groupe d'articles sur les Templates T4. Je vous conseille fortement de suivre ces articles depuis le début :

- à la découverte des Templates T4 ;

- Templates T4 et Entity Framework ;

- Classes Métadonnées, Entity Framework et Templates T4.

Vous pourrez retrouver l'ensemble de ces articles sur ma page Developpez.

Commentez cet article : Commentez ♪

- Titre : Templates T4 et Entity Framework

- Auteur : Kevin Perriat

- Parution : 4 juin 2012

- Licence : Copyright ® 2012 Kevin Perriat. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Mise en place des templates T4

- II-A. Cas 1 : dans le même projet que l'EDMX

- II-B. Cas 2 : dans un autre projet que l'EDMX

- III. Conclusion

- IV. Remerciements

I - Introduction

Comme nous avons pu le voir lors de l'introduction aux Templates T4, 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.

II - Mise en place des templates T4

II-A - 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 :

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# :

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

- 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 :

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 :

II-B - 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 :

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

À 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 :

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.

III - 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.

IV - Remerciements

Je tiens à remercier FirePrawn et jacques_jean pour leurs relectures.