A geração automática de código no SSAG3.0 garante padronização, produtividade e conformidade com DDD, SOLID e Clean Code. A funcionalidade permite criar entidades, repositórios, serviços, DTOs, validações, controllers e UI Blazor de forma automática, baseada nos metadados das tabelas.
Os templates estão organizados em:
SSAG3.ERP.Shared/Templates/
├── BackEnd/
│ ├── Domain/
│ │ ├── Entity.template
│ │ ├── RepositoryInterface.template
│ ├── Application/
│ │ ├── Service.template
│ │ ├── ServiceInterface.template
│ │ ├── BackendValidator.template
│ ├── Infrastructure/
│ │ ├── Configuration.template
│ │ ├── Repository.template
│ ├── API/
│ │ ├── Controller.template
│ │ ├── DependencyInjection.template
│ ├── Shared/
│ │ ├── DTO.template
│ │ ├── Validation.template
├── FrontEnd/
│ ├── UIWeb/
│ │ ├── EntityForm.template
│ │ ├── ListPage.template
│ │ ├── Service.template
│ │ ├── InjecoesDependencias.template
Consulta SYS_BDF para obter:
Definição do modelo:
public enum TipoModeloFonte
{
BackEndDDD,
FrontBlazorServer,
FrontUIMobile,
FrontUIMaui,
SqlServer
}
Os placeholders do template são preenchidos dinamicamente:
{{EntityAlias}} → Nome da classe entidade{{Namespace}} → Namespace correto{{Propriedades}} → Lista de propriedades geradas{{DataAtual}} → Data da geraçãoGeradorEntidade.Gerar(metadados, _templates["Entidade"]);
GeradorRepositorio.Gerar(metadados, _templates["Repositorio"]);
GeradorService.Gerar(metadados, _templates["Service"]);
GeradorDTO.Gerar(metadados, _templates["DTO"]);
GeradorValidator.Gerar(metadados, _templates["Validator"]);
GeradorController.Gerar(metadados, _templates["Controller"]);
GeradorConfiguration.Gerar(metadados, _templates["Configuration"]);
Ordem).Virtual não são persistidos ([NotMapped]).SomenteLeitura são protegidos na UI.[Key].[Required].[MaxLength] conforme a tabela.Exemplo:
public class SYS_BDT : BaseEntity
{
[Key]
[Required]
[MaxLength(10)]
public string Id { get; set; } // Identificador da tabela.
[Required]
[MaxLength(120)]
public string Nome { get; set; } // Nome da tabela.
[NotMapped]
public string NomeFormatado { get; set; } // Apenas para UI
}
public class TabelaDTOValidator : AbstractValidator<TabelaDTO>
{
public TabelaDTOValidator()
{
RuleFor(x => x.Id).NotEmpty().WithMessage("O Id é obrigatório.");
RuleFor(x => x.Nome).NotEmpty().WithMessage("O Nome é obrigatório.")
.MaximumLength(120).WithMessage("Máximo de 120 caracteres.");
}
}
SSAG3.ERP/
├── Domain/
│ ├── Entities/
│ │ ├── Tabela.cs
│ ├── Repositories/
│ │ ├── ITabelaRepository.cs
├── Application/
│ ├── DTOs/
│ │ ├── TabelaDTO.cs
│ ├── Services/
│ │ ├── TabelaService.cs
│ ├── Validators/
│ │ ├── TabelaDTOValidator.cs
├── Infrastructure/
│ ├── Repositories/
│ │ ├── TabelaRepository.cs
├── API/
│ ├── Controllers/
│ │ ├── TabelaController.cs
├── UIWeb/
│ ├── Pages/
│ │ ├── TabelaList.razor
│ │ ├── TabelaForm.razor
SYS_BDT e SYS_BDC antes da geração.📝 Autor: Márcio de Matos Costa
🗓️ Última Atualização: 07/02/2025
🌐 Projeto: SSAG3.0 - ERP Inteligente