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,异步版本,但在层和文件夹结构方面有一些固执己见的观点。