AWAS ist ein einfaches, eigenwilliges Codegenerierungspaket für ASP.NET, das auf T4Scaffolding aufbaut. Mit AWAS können Sie schnell ein Gerüst für die Standardbausteine für Web-API-Controller, Dienste und Repositorys basierend auf einem bereitgestellten Entitätsmodell erstellen.
GitHub
NuGet
T4Gerüst (≥ 1.0.8)
Öffnen Sie das Paket-Manager-Konsolenfenster :
Tools > Library Package Manager > Package Manager Console
Führen Sie den folgenden Befehl aus:
Install-Package ASP.NET.WebApiScaffolding
Alle Befehle werden nach der Installation in der Package Manager-Konsole ausgeführt.
####So generieren Sie einen Web-API-Controller für Student
Scaffold WebApiController Student
* Dadurch werden auch automatisch DbContext und Service für Student
generiert. Um ein solches Verhalten zu deaktivieren, verwenden Sie das Flag -NoChildItems
.
* Der Web-API-Controller und alle generierten untergeordneten Elemente basieren auf dem Service Layer Pattern. Um basierend auf dem Repository Pattern zu generieren, verwenden Sie stattdessen das Flag -Repository
.
####Um einen Service für Student
zu generieren
Scaffold Service Student
* Wie oben.
####Um ein Repository für Student
zu erstellen
Scaffold Repository Student
* Dieser Befehl verfügt offensichtlich nicht über das Flag -Repository
####Optionale Flags
Flaggen | Verhalten |
---|---|
-Repository | Wechseln Sie zum Repository-Muster für generierte Boilerplates |
-NoChildItems | Generieren Sie keine weiteren Abhängigkeiten automatisch |
-Force | Vorhandene Datei überschreiben, falls vorhanden |
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]
Angenommen, wir arbeiten mit einem Modell namens Student
, generiert AWAS Boilerplates basierend auf dem Service Layer Pattern. Für ein bestimmtes Modell sieht der Stapel wie folgt aus:
StudentController |
---|
StudierendenService |
Alternativ können Sie das Flag -Repository
hinzufügen, um Boiletplates basierend auf dem Repository-Muster zu generieren. Der Stapel sieht wie folgt aus:
StudentController |
---|
StudierendenService |
StudentRepository |
Project/
...
Controllers/
StudentController.cs
CourseController.cs
...
DataAccessLayer/
ProjectContext.cs
ProjectInitializer.cs
Repositories/
StudentRepository.cs
CourseRepository.cs
...
Services/
StudentService.cs
CourseService.cs
...
...
Da das Paket auf T4Scaffolding aufbaut, können wir den von T4Scaffolding bereitgestellten CustomScaffolder
und CustomTemplate
nutzen.
####Custom Scaffolder Mit dem Custom Scaffolder können wir benutzerdefinierte Boiletplate-Gerüste erstellen, sodass wir problemlos dasselbe Boiletplate erstellen können.
Um einen benutzerdefinierten Gerüstbauer zu generieren, rufen Sie Foo
auf:
Scaffold CustomScaffolder Foo
Es wird ein Ordner erstellt:
Project/
...
CodeTemplates/
Scaffolders/
Foo/
Foo.ps1
FooTemplate.cs.t4
...
Sie können jetzt Foo.ps1
und FooTemplate.cs.t4
an Ihre Bedürfnisse anpassen. Um Ihren neu erstellten benutzerdefinierten Gerüstbauer zu verwenden, führen Sie Folgendes aus:
Scaffold Foo [flags]
####Benutzerdefinierte Vorlage Benutzerdefinierte Vorlagen ermöglichen uns die Wiederverwendung der vorhandenen Gerüste, die mit T4Scaffolding und AWAS geliefert werden, jedoch mit einem Vorlagenstil Ihrer Wahl.
So generieren Sie eine benutzerdefinierte Vorlage für WebApiController
:
Scaffold CustomTemplate WebApiController WebApiControllerTemplate
Es wird ein Ordner erstellt:
Project/
...
CodeTemplates/
Scaffolders/
WebApiController/
WebApiControllerTemplate.cs.t4
...
Sie können WebApiControllerTemplate.cs.t4
jetzt an Ihre Bedürfnisse anpassen. Solange die benutzerdefinierte Vorlage im Ordner vorhanden ist, verwendet das Paket Ihre Vorlage für alle WebApiController-Gerüste:
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
Einige der Ressourcen, die ich unterwegs genutzt habe ...
Der Typ „ObjectContent`1“ konnte den Antworttext für den Inhaltstyp „applicationxml;“ nicht serialisieren. charset=utf-8'.
Wenn Sie diese Ausnahmemeldung erhalten, fügen Sie das folgende Snippet zu App_Start/WebApiConfig.cs
> Register()
hinzu und starten Sie neu.
var json = config . Formatters . JsonFormatter ;
json . SerializerSettings . PreserveReferencesHandling = Newtonsoft . Json . PreserveReferencesHandling . Objects ;
config . Formatters . Remove ( config . Formatters . XmlFormatter ) ;
Das Paket ist von MvcScaffolding inspiriert. Es kann als asynchrone Web-API-Version betrachtet werden, jedoch mit einer eigenwilligen Perspektive in Bezug auf die Ebenen und Ordnerstrukturen.