AWAS是一個簡單、固執己見的 ASP.NET 程式碼產生包,建構在 T4Scaffolding 之上。 AWAS 可讓您基於提供的實體模型快速建立 Web API 控制器、服務、儲存庫的標準樣板。
GitHub
努格特
T4鷹架(≥1.0.8)
開啟套件管理器控制台視窗:
Tools > Library Package Manager > Package Manager Console
運行以下命令:
Install-Package ASP.NET.WebApiScaffolding
安裝後,所有命令都在程式包管理器控制台中執行。
####為Student
產生 Web API 控制器
Scaffold WebApiController Student
*這也將自動產生 DbContext 和Student
服務,要停用此類行為,請使用-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 將根據服務層模式產生樣板。對於給定的模型,堆疊將如下所示:
學生控制器 |
---|
學生服務 |
或者,您可以新增-Repository
標誌以基於儲存庫模式產生樣板,堆疊將如下所示:
學生控制器 |
---|
學生服務 |
學生資料庫 |
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,非同步版本,但在層和資料夾結構方面有一些固執己見的觀點。