AWAS est un package de génération de code simple et avisé pour ASP.NET construit sur T4Scaffolding. AWAS vous permet d'élaborer rapidement les modèles standards pour les contrôleurs, services et référentiels d'API Web sur la base d'un modèle d'entité fourni.
GitHub
NuGet
T4Échafaudage (≥ 1.0.8)
Ouvrez la fenêtre de la console du gestionnaire de packages :
Tools > Library Package Manager > Package Manager Console
Exécutez la commande suivante :
Install-Package ASP.NET.WebApiScaffolding
Toutes les commandes sont exécutées dans la console Package Manager après l'installation.
####Pour générer un contrôleur d'API Web pour Student
Scaffold WebApiController Student
* Cela générera également automatiquement le DbContext et le Service for Student
, pour désactiver un tel comportement, utilisez l'indicateur -NoChildItems
.
* Le contrôleur d'API Web et tous les éléments enfants générés sont basés sur le modèle de couche de service. Pour générer en fonction du modèle de référentiel, utilisez plutôt l'indicateur -Repository
.
####Pour générer un service pour Student
Scaffold Service Student
* Comme ci-dessus.
####Pour générer un référentiel pour Student
Scaffold Repository Student
* Cette commande n'a évidemment pas l'indicateur -Repository
####Drapeaux facultatifs
Drapeaux | Comportement |
---|---|
-Repository | Passer au modèle de référentiel pour les passe-partout générés |
-NoChildItems | Ne générer aucune autre dépendance automatiquement |
-Force | Écraser le fichier existant s'il existe |
Scaffold WebApiController [-Project] [-CodeLanguage] [-DbContextType] [-Area] [-NoChildItems] [-Repository] [-TemplateFolders] [-Force]
Scaffold Service [-Project] [-CodeLanguage] [-DbContextType] [-Area] [-NoChildItems] [-Repository] [-TemplateFolders] [-Force]
Scaffold Repository [-Project] [-CodeLanguage] [-DbContextType] [-Area] [-NoChildItems] [-TemplateFolders] [-Force]
Scaffold DbContext [-Project] [-CodeLanguage] [-DbContextType] [-Area] [-NoChildItems] [-TemplateFolders] [-Force]
[-optional flag]
En supposant que nous travaillons avec un modèle appelé Student
, AWAS générera des passe-partout basés sur le modèle de couche de service. Pour un modèle donné, la pile sera la suivante :
ÉtudiantContrôleur |
---|
Service aux étudiants |
Alternativement, vous pouvez ajouter l'indicateur -Repository
pour générer des plaques d'ébullition basées sur le modèle de référentiel, la pile sera la suivante :
ÉtudiantContrôleur |
---|
Service aux étudiants |
Référentiel des étudiants |
Project/
...
Controllers/
StudentController.cs
CourseController.cs
...
DataAccessLayer/
ProjectContext.cs
ProjectInitializer.cs
Repositories/
StudentRepository.cs
CourseRepository.cs
...
Services/
StudentService.cs
CourseService.cs
...
...
Étant donné que le package est construit sur T4Scaffolding, nous pouvons tirer parti du CustomScaffolder
et CustomTemplate
fournis par T4Scaffolding.
####Échafaudage personnalisé L'échafaudage personnalisé nous permet de créer un échafaudage de plaque de chaudière personnalisé afin que nous puissions générer facilement la même plaque de chaudière.
Pour générer un échafaudage personnalisé, appelez Foo
:
Scaffold CustomScaffolder Foo
Un dossier sera généré :
Project/
...
CodeTemplates/
Scaffolders/
Foo/
Foo.ps1
FooTemplate.cs.t4
...
Vous pouvez désormais personnaliser Foo.ps1
et FooTemplate.cs.t4
selon vos besoins. Pour utiliser votre échafaudage personnalisé nouvellement créé, exécutez :
Scaffold Foo [flags]
####Modèle personnalisé Les modèles personnalisés nous permettent de réutiliser les échafaudages existants fournis avec T4Scaffolding et AWAS, mais avec un style de modèle de votre choix.
Pour générer un modèle personnalisé pour WebApiController
:
Scaffold CustomTemplate WebApiController WebApiControllerTemplate
Un dossier sera généré :
Project/
...
CodeTemplates/
Scaffolders/
WebApiController/
WebApiControllerTemplate.cs.t4
...
Vous pouvez désormais personnaliser WebApiControllerTemplate.cs.t4
selon vos besoins. Tant que le modèle personnalisé existe dans le dossier, le package utilisera votre modèle pour tous les échafaudages WebApiController :
Scaffold WebApiController [flags]
Scaffold CustomTemplate WebApiController WebApiControllerTemplate
Scaffold CustomTemplate Service ServiceWithContextTemplate
Scaffold CustomTemplate Service ServiceWithRepositoryTemplate
Scaffold CustomTemplate Repository RepositoryTemplate
Scaffold CustomTemplate Initializer InitializerTemplate
Scaffold CustomTemplate DbContext DbContextTemplate
Scaffold CustomTemplate DbContext DbContextEntityMemberTemplate
Certaines des ressources que j'ai utilisées en cours de route...
Le type « ObjectContent`1 » n'a pas réussi à sérialiser le corps de la réponse pour le type de contenu « applicationxml ; jeu de caractères = utf-8'.
Si vous recevez ce message d'exception, ajoutez l'extrait suivant dans App_Start/WebApiConfig.cs
> Register()
, redémarrez.
var json = config . Formatters . JsonFormatter ;
json . SerializerSettings . PreserveReferencesHandling = Newtonsoft . Json . PreserveReferencesHandling . Objects ;
config . Formatters . Remove ( config . Formatters . XmlFormatter ) ;
Le package est inspiré de MvcScaffolding. Il peut être considéré comme une API Web, en version asynchrone mais avec une perspective avisée en termes de couches et de structures de dossiers.