Comment démarrer avec AutoMapper et ASP.NET Core 2

Photo en capturant le coeur humain. sur Unsplash

Si vous demandiez à un groupe de développeurs ASP.NET de nommer leurs packages les plus installés et les plus utilisés, je serais surpris que la plupart n’aient pas AutoMapper sur leur liste.

Au moment de la rédaction de ce manuel, AutoMapper sur NuGet.org a été téléchargé 17 291 772 fois et occupe la 6e place du classement des 100 meilleurs packages de communauté les plus téléchargés au cours des 6 dernières semaines. Mais qu'est-ce qu'AutoMapper?

Logo de AutoMapper GitHub

Qu'est-ce que AutoMapper?

Je suis sûr que vous avez été dans ce scénario un nombre incalculable de fois: vous avez une application Web ASP.NET et vous souhaitez conserver la séparation entre vos modèles de domaine et vos modèles de vue. Vous écrivez donc un code qui vous permet de mapper votre modèle de domaine dans votre modèle de vue. Ensuite, lorsque vous ajoutez plus de vues et de modèles de domaine, vous finissez par écrire plus de mappeurs. Ensuite, vous écrivez des mappeurs pour mapper vos objets de transfert de domaine de votre couche de base de données vers vos objets de domaine… vous obtenez le point.

Ce code est banal et répétitif. Et c’est là que AutoMapper entre en jeu. Il s’agit d’un mappeur d’objet à objet basé sur des conventions qui nécessite peu de configuration.

AutoMapper est un mappeur d'objet à objet basé sur des conventions qui nécessite peu de configuration.

Voici comment utiliser AutoMapper.

Débuter avec AutoMapper

Étape 1: Installation d'AutoMapper

Pour cet exemple, vous devrez créer une application Web ASP.NET Core 2 (j'utilise Visual Studio 2017 sous Windows).

Vous pouvez installer AutoMapper de deux manières différentes: vous pouvez cliquer avec le bouton droit de la souris sur le projet Web, sélectionner Gérer les packages NuGet, puis rechercher et installer le package AutoMapper.Extensions.Microsoft.DependencyInjection.

Ou vous pouvez utiliser la console Package Manager avec la commande suivante:

Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection

En installant le package AutoMapper.Extensions.Microsoft.DependencyInjection, le package AutoMapper sera également automatiquement installé.

Étape 2: Configuration d'AutoMapper

Vous pouvez maintenant commencer et configurer AutoMapper dans votre classe Startup.cs sous la méthode ConfigureServices:

Créons un modèle utilisateur dans le dossier Modèles:

Parallèlement à notre modèle utilisateur, nous souhaitons également créer un nouveau ViewModel qui sera éventuellement utilisé pour afficher nos données utilisateur:

Nous avons maintenant notre modèle d’utilisateur et notre ViewModel, comment dire à AutoMapper de mapper de notre mode utilisateur à notre ViewModel? Eh bien, nous utilisons un profil.

Les profils dans AutoMapper sont un bon moyen d’organiser vos collections de cartographie. Pour créer un profil, nous créons une nouvelle classe et héritons de ce profil. Nous pouvons ensuite ajouter notre configuration de mappage dans notre nouveau constructeur de classes.

Allez de l'avant et créez une classe UserProfile pour mapper notre modèle d'utilisateur à notre utilisateur ViewModel:

Nous avons maintenant une classe UserProfile qui crée le mappage entre notre modèle utilisateur et User ViewModel. Mais comment AutoMapper connaît-il notre classe UserProfile?

Eh bien, si vous vous en souvenez, au début de cet exemple, nous avons ajouté cette ligne de code à notre méthode ConfigureServices dans Startup.cs:

Lorsque notre application démarre et ajoute AutoMapper, AutoMapper analyse notre assemblage et recherche les classes qui héritent de Profile, puis charge leurs configurations de mappage.

Étape 3: AutoMapper en action

Créons un nouveau UserController dans le dossier Controllers:

Pour utiliser nos mappages configurés, nous devons injecter l'interface IMapper dans le constructeur de notre classe UserController:

Comme pour les profils, en appelant AddAutoMapper dans notre méthode Startup.cs ConfigureServices, il s’est occupé de l’enregistrement d’IMapper pour nous.

Dans notre méthode Index Action, créons un objet User:

Nous pouvons maintenant utiliser l'interface IMapper que nous avons injectée dans notre constructeur et appeler la méthode Map.

Nous donnons à la méthode Map le type que nous voulons mapper et l'objet à partir duquel nous aimerions mapper:

Dans le code ci-dessus, j’ai également transmis notre ViewModel utilisateur nouvellement mappé à la vue.

Enfin, nous pouvons maintenant créer une vue pour notre contrôleur à l'aide de notre ViewModel utilisateur:

C'est le moment de faire une grande révélation - lancez l'application et naviguez vers / utilisateur (dans mon cas, je suis allé à http: // localhost: 64877 / utilisateur):

Voilà, vous devriez être en mesure de voir que les propriétés que nous avons utilisées lors de la création de notre utilisateur ont été mappées à notre ViewModel utilisateur et sont maintenant affichées.

Conclusion

Avec Automapper, vous pouvez mapper un objet sur votre application avec juste un peu de configuration.

Nous venons de détailler tout ce qu’AutoMapper a à offrir en termes de mappage d’objets, mais j’espère que vous pourrez voir à quel point il est facile de fonctionner avec.

Je vous encourage à continuer à explorer les fonctionnalités et les utilisations d'AutoMappers dans le lien de documentation ci-dessous.

Ressources:

Jimmy Bogard
 AutoMapper
 AutoMapper - Documentation
 NuGet