AWAS — это простой и продуманный пакет генерации кода для ASP.NET, созданный на основе T4Scaffolding. AWAS позволяет быстро создавать стандартные шаблоны для контроллеров, служб и репозиториев веб-API на основе предоставленной модели сущности.
GitHub
NuGet
T4Леса (≥ 1.0.8)
Откройте окно консоли диспетчера пакетов :
Tools > Library Package Manager > Package Manager Console
Запустите следующую команду:
Install-Package ASP.NET.WebApiScaffolding
Все команды выполняются в консоли диспетчера пакетов после установки.
####Чтобы создать контроллер веб-API для Student
Scaffold WebApiController Student
* Это также автоматически сгенерирует DbContext и Service for Student
. Чтобы отключить такое поведение, используйте флаг -NoChildItems
.
* Контроллер веб-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, мы можем использовать CustomScaffolder
и CustomTemplate
предоставляемые T4Scaffolding.
####Пользовательский шаблон Шаблон Пользовательский шаблон позволяет нам создавать собственный шаблон шаблона, чтобы мы могли легко создавать один и тот же шаблон шаблона.
Чтобы создать собственный скаффолдер, вызовите 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. Его можно рассматривать как асинхронную версию веб-API, но с некоторой самоуверенной точки зрения с точки зрения слоев и структур папок.