AWAS は、T4Scaffolding 上に構築された ASP.NET 用のシンプルで独自のコード生成パッケージです。 AWAS を使用すると、提供されたエンティティ モデルに基づいて、Web API コントローラー、サービス、リポジトリの標準ボイラープレートを迅速に構築できます。
GitHub
NuGet
T4Scaffolding (≥ 1.0.8)
パッケージ マネージャー コンソール ウィンドウを開きます。
Tools > Library Package Manager > Package Manager Console
次のコマンドを実行します。
Install-Package ASP.NET.WebApiScaffolding
すべてのコマンドは、インストール後にパッケージ マネージャー コンソールで実行されます。
#### Student
用の Web API コントローラーを生成するには
Scaffold WebApiController Student
*これにより、 Student
用の DbContext と Service も自動的に生成されます。そのような動作を無効にするには、 -NoChildItems
フラグを使用します。
* Web API コントローラーと生成されるすべての子アイテムはサービス レイヤー パターンに基づいています。リポジトリ パターンに基づいて生成するには、代わりに-Repository
フラグを使用します。
#### Student
向けサービスを生成するには
Scaffold Service Student
※上記の通り。
#### Student
用のリポジトリを生成するには
Scaffold Repository Student
*このコマンドには明らかに-Repository
フラグがありません
####オプションのフラグ
フラグ | 行動 |
---|---|
-Repository | 生成されたボイラープレートのリポジトリ パターンに切り替える |
-NoChildItems | 他の依存関係を自動的に生成しない |
-Force | 既存のファイルが存在する場合は上書きします |
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]
Student
というモデルを使用していると仮定すると、AWAS はサービス レイヤー パターンに基づいてボイラープレートを生成します。特定のモデルのスタックは次のようになります。
StudentController |
---|
学生サービス |
あるいは、 -Repository
フラグを追加して、リポジトリ パターンに基づいてボイレットプレートを生成することもできます。スタックは次のようになります。
StudentController |
---|
学生サービス |
StudentRepository |
Project/
...
Controllers/
StudentController.cs
CourseController.cs
...
DataAccessLayer/
ProjectContext.cs
ProjectInitializer.cs
Repositories/
StudentRepository.cs
CourseRepository.cs
...
Services/
StudentService.cs
CourseService.cs
...
...
パッケージは T4Scaffolding 上に構築されているため、T4Scaffolding が提供するCustomScaffolder
とCustomTemplate
利用できます。
####カスタム スキャフォルダー カスタム スキャフォルダーを使用すると、カスタム ボイレットプレート スキャフォルダーを作成できるため、同じボイレットプレートを簡単に生成できます。
カスタム スキャフォールダーを生成するには、 Foo
呼び出します。
Scaffold CustomScaffolder Foo
フォルダーが生成されます。
Project/
...
CodeTemplates/
Scaffolders/
Foo/
Foo.ps1
FooTemplate.cs.t4
...
Foo.ps1
とFooTemplate.cs.t4
ニーズに合わせてカスタマイズできるようになりました。新しく作成したカスタム スキャフォルダーを使用するには、次を実行します。
Scaffold Foo [flags]
####カスタム テンプレート カスタム テンプレートを使用すると、T4Scaffolding と AWAS に付属する既存のスキャフォルダーを、選択したテンプレート スタイルで再利用できます。
WebApiController
のカスタム テンプレートを生成するには:
Scaffold CustomTemplate WebApiController WebApiControllerTemplate
フォルダーが生成されます。
Project/
...
CodeTemplates/
Scaffolders/
WebApiController/
WebApiControllerTemplate.cs.t4
...
WebApiControllerTemplate.cs.t4
ニーズに合わせてカスタマイズできるようになりました。カスタム テンプレートがフォルダーに存在する限り、パッケージはスキャフォールディングされたすべての 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
途中で使用したリソースの一部...
「ObjectContent`1」タイプは、コンテンツ タイプ「applicationxml」の応答本文をシリアル化できませんでした。文字セット=utf-8'。
この例外メッセージが表示された場合は、次のスニペットをApp_Start/WebApiConfig.cs
> Register()
に追加し、再起動します。
var json = config . Formatters . JsonFormatter ;
json . SerializerSettings . PreserveReferencesHandling = Newtonsoft . Json . PreserveReferencesHandling . Objects ;
config . Formatters . Remove ( config . Formatters . XmlFormatter ) ;
パッケージは MvcScaffolding からインスピレーションを得ています。これは Web API の非同期バージョンとして見ることができますが、レイヤーとフォルダー構造に関しては独自の観点がいくつかあります。