AWAS es un paquete de generación de código simple y obstinado para ASP.NET construido sobre T4Scaffolding. AWAS le permite desarrollar rápidamente los modelos estándar para controladores, servicios y repositorios de API web en función de un modelo de entidad proporcionado.
GitHub
NuGet
T4 Andamios (≥ 1.0.8)
Abra la ventana de la consola del Administrador de paquetes :
Tools > Library Package Manager > Package Manager Console
Ejecute el siguiente comando:
Install-Package ASP.NET.WebApiScaffolding
Todos los comandos se ejecutan en la Consola del Administrador de paquetes después de la instalación.
####Para generar un controlador API web para Student
Scaffold WebApiController Student
* Esto también generará automáticamente DbContext y Service for Student
; para deshabilitar dicho comportamiento, use el indicador -NoChildItems
.
* El controlador de API web y todos los elementos secundarios generados se basan en el patrón de capa de servicio; para generarlos según el patrón de repositorio, utilice el indicador -Repository
.
####Para generar un Servicio para Student
Scaffold Service Student
* Como arriba.
####Para generar un repositorio para Student
Scaffold Repository Student
* Este comando obviamente no tiene el indicador -Repository
####Banderas opcionales
Banderas | Comportamiento |
---|---|
-Repository | Cambiar al patrón de repositorio para los textos estándar generados |
-NoChildItems | No genere ninguna otra dependencia automáticamente |
-Force | Sobrescribir el archivo existente si existe |
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]
Suponiendo que estamos trabajando con un modelo llamado Student
, AWAS generará textos estándar basados en el patrón de capa de servicio. Para un modelo dado, la pila será la siguiente:
EstudianteControlador |
---|
Servicio Estudiantil |
Alternativamente, puede agregar el indicador -Repository
para generar plantillas basadas en el patrón de repositorio, la pila será la siguiente:
EstudianteControlador |
---|
Servicio Estudiantil |
Repositorio de estudiantes |
Project/
...
Controllers/
StudentController.cs
CourseController.cs
...
DataAccessLayer/
ProjectContext.cs
ProjectInitializer.cs
Repositories/
StudentRepository.cs
CourseRepository.cs
...
Services/
StudentService.cs
CourseService.cs
...
...
Dado que el paquete está construido sobre T4Scaffolding, podemos aprovechar CustomScaffolder
y CustomTemplate
que proporciona T4Scaffolding.
####Andamio personalizado El andamio personalizado nos permite crear un andamio de placa de caldera personalizado para que podamos generar la misma placa de caldera fácilmente.
Para generar una carpeta de andamios personalizada, llame Foo
:
Scaffold CustomScaffolder Foo
Se generará una carpeta:
Project/
...
CodeTemplates/
Scaffolders/
Foo/
Foo.ps1
FooTemplate.cs.t4
...
Ahora puede personalizar Foo.ps1
y FooTemplate.cs.t4
según sus necesidades. Para utilizar su scaffolder personalizado recién creado, ejecute:
Scaffold Foo [flags]
####Plantilla personalizada Las plantillas personalizadas nos permiten reutilizar los andamios existentes que vienen con T4Scaffolding y AWAS, pero con un estilo de plantilla de su elección.
Para generar una plantilla personalizada para WebApiController
:
Scaffold CustomTemplate WebApiController WebApiControllerTemplate
Se generará una carpeta:
Project/
...
CodeTemplates/
Scaffolders/
WebApiController/
WebApiControllerTemplate.cs.t4
...
Ahora puede personalizar WebApiControllerTemplate.cs.t4
según sus necesidades. Mientras exista la plantilla personalizada en la carpeta, el paquete utilizará su plantilla para todos los andamios de 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
Algunos de los recursos que utilicé en el camino...
El tipo 'ObjectContent`1' no pudo serializar el cuerpo de la respuesta para el tipo de contenido 'applicationxml; juego de caracteres=utf-8'.
Si recibe este mensaje de excepción, agregue el siguiente fragmento en App_Start/WebApiConfig.cs
> Register()
y reinicie.
var json = config . Formatters . JsonFormatter ;
json . SerializerSettings . PreserveReferencesHandling = Newtonsoft . Json . PreserveReferencesHandling . Objects ;
config . Formatters . Remove ( config . Formatters . XmlFormatter ) ;
El paquete está inspirado en MvcScaffolding. Puede verse como una API web, una versión asincrónica pero con cierta perspectiva obstinada en términos de capas y estructuras de carpetas.