Développeur FullStack & Devops

Notes et mémos techniques

ASP.Net MvcScaffolding

Définition

Scaffolding, mais que signifie donc ce terme barbare ? La traduction littérale en Français du mot anglais "scaffolding" est "échafaudage". Dans l'univers du développement cela se rapporte à la création automatisé d'une sorte de squelette de code.

ASP.NET Scaffolding est un framework de génération de code pour la conception d'applications web, il est inclus dans Visual Studio ( > 2010) en standard pour les projets ASP.Net MVC. Il apparait dans l'interface graphique de VS lorsqu'on ajoute un Controller par exemple avec génération des Views avec Entity Framework:

VS2013_scaffolding_ASP.Net_MVC

Scaffolding en ligne de commande NuGet

installation et démarrage

Exploiter un outil en ligne de commande permet de mieux contrôler l'outil (en spécifiant les options ou désignant des cibles).

Pouvoir utiliser cette outil de génération de code depuis le Pacakge Manager Console (PMC), en ligne de commande, il faut tout d'abord installer le package Nuget MvcScaffolding. Si vous avez découper votre solution Visual Studio en plusieurs projets (et c'est mieux), il faudra se rappeler que cet outil permets de générer (entre autres) des Controllers et des Views, il donc doit être installé et exécuté dans votre projet "Frontal" (votre projet ASP.Net MVC).

Pour installer le package NuGet depuis la console Nuget il suffit d'y entrer:

Install-Package MvcScaffolding

Cela nous donnera accès à la commande Scaffold depuis la PMC.

Note: si lorsque vous tappez Scaffold dans la PMC, la console vous retourne: "The term 'Scaffold' is not recognized as the name of a cmdlet..." c'est que vous avez soit installé le package MvcScaffolding dans le mauvais projet, soit que vous avez exécuté votre commande sur le mauvais projet (à sélectionner dans la dropdown list du PMC "Defaul Project".

la commande Scaffold et ses paramètres

Une rapide consultation de l'aide en ligne de la commande Scaffold (get-help Scaffold) qui est en fait un alias de la commande Invoke-Scaffolder, ne nous donne que très peu d'indications... Il suffit en fait d'utiliser la touche TAB du clavier (c'est une console PowerShell après tout) pour parcourir les arguments disponibles.

Un exemple de commande:

Scaffold Controller -ControllerName Adresses -ModelType MonNamespace.Domain.Entities.Adresse -DbContext MonNamespace.Domain.CMContext

cette commande (Scaffold Controller) va me créer:

  1. le controller AdressesController: -ControllerName Adresses
  2. selon mon modèle de données (Domain Model) Adresse: -ModelType MonNamespace.Domain.Entities.Adresse
  3. en utilisant (ou créant s'il n'existe pas) le DbContext: -DbContext MonNamespace.Domain.CMContext
  4. toutes les vues (listing, détail, édition, création, confirmation de suppression) associées à ce controller

Et voilà un ÉNORME gain de temps :) Bien sure cela sert de point de départ mais nous évite de créer chaque composant à la mano... merci qui  ? merci Steven Sanderson et Scott Hanselman !

autres paramètres utiles

La commande Scaffold comporte bien d'autres paramètres tels que:

  • Scaffold Controller
  • Scaffold Action
  • Scaffold View
  • Scaffold Views
  • Scaffold Repository
  • Scaffold DbContext
  • Scaffold UnitTest

Je vous invite à les découvrir ainsi que leurs options, cela pourrait vous faire gagner énormément de temps notamment dans les phases de prototypage.

entity-framework
nuget
dotnet
productivite
programmation
rédigé le 04/09/14 par Behrouze
A proposCheat SheetsOutilsVidéos